2017-06-05 90 views
1

我不想讓另一個.sh文件帶有腳本,並且要在Dockerfile中及時添加shell腳本代碼。錯誤:Dockerfile中的shell腳本文件意外結束(期待「執行」)

/bin/sh的:語法錯誤:意外的文件結束(預計「做」)

這裏是Dockerfile的使用腳本的一部分:

然而,我的圖像生成過程中收到一條錯誤消息
RUN cat .env | while [ read LINE ] \ 
do \ 
    envName=$(echo "$LINE" | grep -o "^[^\=]*") \ 
    echo "PassEnv $envName" >> httpd.conf \ 
done 

任何想法是什麼錯?

回答

1

刪除方括號內的[],並在行尾使用;,因爲在看到您的\的時候docker連接線,所以命令會融化。

這是爲我工作:

RUN cat .env | while read LINE ;\ 
    do \ 
     envName=$(echo "$LINE" | grep -o "^[^\=]*"); \ 
     echo "PassEnv $envName" >> httpd.conf ;\ 
    done 
+1

這對我有效,謝謝! –

+0

隨時歡迎! – Robert

0

while構建期望do是在單獨的行(或者,分號之後顯示)。所以你可能想要:

RUN cat .env | while [ read LINE ]; \ 
do \ 
    envName=$(echo "$LINE" | grep -o "^[^\=]*") \ 
    echo "PassEnv $envName" >> httpd.conf \ 
done 

注意第一行的分號。

相關問題