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

Linux 语法错误:dockerfile运行语句中的多行bash命令,linux,bash,docker,Linux,Bash,Docker,我有一个Dockerfile,我对它的回应如下: echo $"RUN cat file | while read pkg \ do\ sudo apt-get install -qy $pkg \ done" >> Dockerfile 现在,当docker执行这一行时,我得到以下错误: /bin/sh:-c:第1行:语法错误:文件意外结束 命令“/bin/sh-c cat autobuild/buildenv_packages”在读取pkg do sudo apt get

我有一个Dockerfile,我对它的回应如下:

echo $"RUN cat file | while read pkg \
do\
  sudo apt-get install -qy $pkg \
done" >> Dockerfile
现在,当docker执行这一行时,我得到以下错误:

/bin/sh:-c:第1行:语法错误:文件意外结束
命令“/bin/sh-c cat autobuild/buildenv_packages”在读取pkg do sudo apt get install-qy done时返回一个非零代码:1

我知道我遗漏了一些小的和语法上的东西,但我无法理解。请注意,
apt get install
语句中的
$pkg
变量不在错误中


任何帮助都将不胜感激

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

echo 'RUN while read pkg; do sudo apt-get install -qy "$pkg"; done < file' >> Dockerfile
echo'在读取包时运行;do sudo apt get install-qy“$pkg”;完成>Dockerfile

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

echo 'RUN while read pkg; do sudo apt-get install -qy "$pkg"; done < file' >> Dockerfile
echo'在读取包时运行;do sudo apt get install-qy“$pkg”;完成>Dockerfile

谢谢!成功了。我想我永远也不会明白这一点。非常感谢:)谢谢!成功了。我想我永远也不会明白这一点。非常感谢:)