错误: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
注意第一行的分号。