我不想有另一个带有脚本的 .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 在看到您的 \
时加入行's,所以命令会融化。
这对我有用:
RUN cat .env | while read LINE ;\
do \
envName=$(echo "$LINE" | grep -o "^[^\=]*"); \
echo "PassEnv $envName" >> httpd.conf ;\
done
关于shell - 错误 : unexpected end of file (expecting "do") for shell script in Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44375737/