Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 无法将文件作为入口点命令的一部分进行修改_Bash_Docker_Sed - Fatal编程技术网

Bash 无法将文件作为入口点命令的一部分进行修改

Bash 无法将文件作为入口点命令的一部分进行修改,bash,docker,sed,Bash,Docker,Sed,MyDockerfile的入口点CMD在执行我的应用程序(Flask)之前,执行一个shell脚本,根据环境变量修改本地文件。shell脚本如下所示: cat static/login.html | sed "s/some_match/some_substitute/g" > static/login.html 但是,我发现生成的文件是零字节。你知道会发生什么吗 谢谢。我可以重现你的问题,但不能解释。也许还有其他答案 但有一个解决方案可以解决这个问题: 为输出使用与输入不同的文件名 c

My
Dockerfile
的入口点
CMD
在执行我的应用程序(Flask)之前,执行一个shell脚本,根据环境变量修改本地文件。shell脚本如下所示:

cat static/login.html |  sed "s/some_match/some_substitute/g" > static/login.html
但是,我发现生成的文件是零字节。你知道会发生什么吗


谢谢。

我可以重现你的问题,但不能解释。也许还有其他答案

但有一个解决方案可以解决这个问题:
为输出使用与输入不同的文件名

cat input.txt | sed“s/a/b/g”>input2.txt

或者,使用-i.bak选项

sed-i.bak“s/b/a/g”input.txt

我只能猜测到底发生了什么:

在读取输入之前,管道的输出可能已打开以进行写入(非追加)

谢谢你尝试一下。请看上面对我有用的东西。