2016-11-16 70 views
0

我有这个Dockerfile,对此,我呼应以下行:语法错误:在dockerfile运行语句多行bash命令

echo $"RUN cat file | while read pkg \ 
do\ 
    sudo apt-get install -qy $pkg \ 
done" >> Dockerfile 

现在,当搬运工执行这条线,我得到以下错误:

/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

我知道有一些小而语法错失,但我无法弄清楚。请注意,apt-get install语句中的$pkg变量不在错误中。

任何援助将不胜感激!

回答

2

代码中的反斜杠只能防止字符串包含文字换行符;他们不写入Dockerfile。如果在do之前没有换行符(或分号),则while条件永不结束;你只是有一个巨大的参数命令列表read

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

谢谢!那样做了。我不认为我会想到这一点。非常感激 :) – pypep278