错误:Dockerfile中shell脚本的意外结束(期待“执行”)

我不想有一个脚本的另一个.sh文件,并要在Dockerfile中及时添加一个shell脚本代码。 但是,我在图像生成过程中收到一条错误消息:

/ bin / sh:语法错误:意外的文件结尾(期待“do”)

下面是一个脚本的Dockerfile的一部分:

RUN cat .env | while [ read LINE ] \ do \ envName=$(echo "$LINE" | grep -o "^[^\=]*") \ echo "PassEnv $envName" >> httpd.conf \ done 

任何想法有什么不对?

去除方括号[] ,并使用; 在行结尾,因为docker在看到你的\时join行,所以这些命令就会融化。

这对我有用:

 RUN cat .env | while read LINE ;\ do \ envName=$(echo "$LINE" | grep -o "^[^\=]*"); \ echo "PassEnv $envName" >> httpd.conf ;\ done 

while构造期望do在单独的行上(或者在分号后出现)。 所以你可能想要:

 RUN cat .env | while [ read LINE ]; \ do \ envName=$(echo "$LINE" | grep -o "^[^\=]*") \ echo "PassEnv $envName" >> httpd.conf \ done 

注意第一行的分号。