繁体   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