簡體   English   中英

從Dockerfile創建bash腳本會刪除注釋

[英]Creating bash script from Dockerfile strips comments

我正在創建一個Docker容器,需要創建一個特定的bash腳本。 我在Dockerfile中使用以下RUN語句:

RUN printf "#!/bin/bash\n \
# This is a bash comment inside the script\
ls -l" > /home/myuser/script.sh

它工作得很好,但結果腳本只是:

#!/bin/bash
ls -l

因此,最終文件中缺少bash注釋。 我懷疑原因是Docker假定該行是一個Dockerfile注釋,但由於它是用雙引號括起來的,我認為很明顯不是這樣。

當然,我可以通過將完整腳本包含在一行中,或者將其放在外部文件中來解決問題,但我認為應該可以在多行引號字符串中包含bash注釋而不會出現這種問題。 任何解決方法? 我嘗試了各種各樣的逃避,沒有成功。

你是對的,Docker將其解釋為一個Dockerfile注釋而不是一個字符串中的注釋,這有點奇怪。 作為一種解決方法,我得到了以下工作

FROM ubuntu:latest

RUN printf "#!/bin/bash \
\n# This is a bash comment inside the script \
\nls -l\n" > /script.sh

RUN cat /script.sh

結果在此輸出中

Step 3 : RUN cat /script.sh
 ---> Running in afc19e228656
#!/bin/bash 
# This is a bash comment inside the script 
ls -l

如果將\\n移動到注釋行的開頭,它仍會生成正確的輸出,但不再將該行視為Dockerfile注釋行。


假設我找到正確的命令解析代碼 ,並且我正確地讀取它,Docker會在嘗試解析該行之前刪除注釋,以查看它是否有任何命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM