从 Dockerfile 删除注释创建 bash 脚本
Creating bash script from Dockerfile strips comments
我正在创建一个 Docker 容器,它需要创建某个 bash 脚本。我在 Docker 文件中使用以下 运行 句子:
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 假定该行是 Docker 文件注释,但由于它包含在双引号内,我认为很明显情况并非如此。
当然我可以通过将完整脚本包含在一行中或将其放在外部文件中来解决问题,但我认为应该可以在多行中包含 bash 注释,引用的字符串没有这种问题。任何解决方法?我尝试了各种转义,但都没有成功。
你说得对,Docker 将其解释为 Docker 文件注释而不是字符串中的注释有点奇怪。作为解决方法,我得到以下工作
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
移动到注释行的开头,它仍会生成正确的输出,但不再将该行视为 Docker 文件注释行。
假设我找到了 right command parsing code,并且我没看错,Docker 在尝试解析该行以查看它是否有任何命令之前删除注释。
我正在创建一个 Docker 容器,它需要创建某个 bash 脚本。我在 Docker 文件中使用以下 运行 句子:
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 假定该行是 Docker 文件注释,但由于它包含在双引号内,我认为很明显情况并非如此。
当然我可以通过将完整脚本包含在一行中或将其放在外部文件中来解决问题,但我认为应该可以在多行中包含 bash 注释,引用的字符串没有这种问题。任何解决方法?我尝试了各种转义,但都没有成功。
你说得对,Docker 将其解释为 Docker 文件注释而不是字符串中的注释有点奇怪。作为解决方法,我得到以下工作
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
移动到注释行的开头,它仍会生成正确的输出,但不再将该行视为 Docker 文件注释行。
假设我找到了 right command parsing code,并且我没看错,Docker 在尝试解析该行以查看它是否有任何命令之前删除注释。