我想在Dockerfile中编写以下RUN命令。但是,泊坞窗不保留新行。
RUN echo "[repo] \ name = YUM Repository \ baseurl = https://example.com/packages/ \ enabled = 1 \ gpgcheck = 0" > /etc/yum.repos.d/Repo.repoxyz
我知道\每一行的末尾都会转义新行。但是,有什么办法可以写多行来保存新行?
\
您可以将称为“ ANSI-C引用” $'...'。它最初是 ksh93的 功能,但现在可以在 bash,zsh,mksh,FreeBSD sh 和 busybox的ash中使用 (但仅当使用ENABLE_ASH_BASH_COMPAT编译时才可用)。
$'...'
由于默认情况下RUN /bin/sh用作shell,因此您需要先使用SHELL指令切换到bash之类的功能。
/bin/sh
以开头的命令$',以结尾的命令,'并\n\用于换行符,如下所示:
$'
'
\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