语法错误:dockerfile RUN语句中的多行bash命令

时间:2016-11-16 19:02:03

标签: linux bash docker

我有这个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变量不在错误中。

任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:3)

代码中的反斜杠只会阻止字符串包含文字换行符;它们不会写入Dockerfile。在do之前没有换行符(或分号),while条件永远不会结束;你只需要一个巨大的命令列表read

echo 'RUN while read pkg; do sudo apt-get install -qy "$pkg"; done < file' >> Dockerfile