我有这个Dockerfile,我回复了以下这一行:
echo $"RUN cat file | while read pkg \
do\
sudo apt-get install -qy $pkg \
done" >> Dockerfile
现在,当docker执行此行时,我收到以下错误:
/bin/sh: -c: line 1: syntax error: unexpected end of file
The command '/bin/sh -c cat autobuild/buildenv_packages | while read pkg do sudo apt-get install -qy done' returned a non-zero code: 1
我知道我遗失了一些小的语法和句法,但我无法弄明白。请注意,$pkg
语句中的apt-get install
变量不在错误中。
任何帮助都将不胜感激!
答案 0 :(得分:3)
代码中的反斜杠只会阻止字符串包含文字换行符;它们不会写入Dockerfile
。在do
之前没有换行符(或分号),while
条件永远不会结束;你只需要一个巨大的命令列表read
。
echo 'RUN while read pkg; do sudo apt-get install -qy "$pkg"; done < file' >> Dockerfile