我想在 Dockerfile 中编写以下 RUN 命令。但是,docker 并没有保留新行。
RUN echo "[repo] \
name = YUM Repository \
baseurl = https://example.com/packages/ \
enabled = 1 \
gpgcheck = 0" > /etc/yum.repos.d/Repo.repoxyz
我知道每行末尾的 \
会转义新行。但是,有什么办法可以写多行来保留新行?
最佳答案
您可以在 $'...'
中使用所谓的“ANSI-C 引用”。 It was originally a ksh93 feature但它现在可以在 bash、zsh、mksh、FreeBSD sh 和 busybox 的 ash 中使用(但仅在使用 ENABLE_ASH_BASH_COMPAT 编译时)。
作为 RUN uses /bin/sh
as shell by default您需要先使用 SHELL 指令切换到 bash 之类的东西。
以 $'
开始您的命令,以 '
结束并使用 \n\
作为换行符,如下所示:
SHELL ["/bin/bash", "-c"]
RUN echo $'[repo] \n\
name = YUM Repository \n\
baseurl = https://example.com/packages/ \n\
enabled = 1 \n\
gpgcheck = 0' > /etc/yum.repos.d/Repo.repoxyz
关于docker - 如何在 Dockerfile 中编写多行命令,同时保留新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33439230/