2016-11-16 28 views
0

私は、私は次の行響いています。このDockerfile、にあります。今構文エラー:dockerfileのRUN文で複数行の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

関連する問題