当前位置: 首页 > 面试题库 >

如何在保留新行的同时在Dockerfile中编写多行命令?

狄峰
2023-03-14
问题内容

我想在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 shbusybox的ash中使用
(但仅当使用ENABLE_ASH_BASH_COMPAT编译时才可用)。

由于默认情况下RUN
/bin/sh用作shell,因此您需要先使用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


 类似资料:
  • 问题内容: 在python中,我们使用反斜杠表示当前语句继续到下一行 例如, 或者简单地说, 可以用Go语言做到这一点吗?谢谢 问题答案: 当然可以,只需将运算符放在最后,例如: 另请注意,不可能在操作员之前中断换行。以下代码 无效 : 该规则在此处和规范中进行了描述。

  • 问题内容: Go是否与Python的多行字符串相似? 如果不是,编写跨多行字符串的首选方式是什么? 问题答案: 根据语言规范,您可以使用原始字符串文字,该字符串由反引号而不是双引号分隔。

  • 问题内容: 我想评估 作为一个块,而不是逐行评估 有没有简单的方法可以将提示移至下一行? 问题答案: 节点v6.4具有一种模式。在repl提示符下,您可以输入多行。 例 以下是所有特殊repl命令的文档 https://nodejs.org/api/repl.html#repl_commands_and_special_keys

  • 我在Emacs中使用Clojure和苹果酒REPL。 在苹果酒REPL中有可能有多行功能吗?我该怎么做呢?

  • 问题内容: 在AngularJS部分中,我如下遍历条目列表: 的内容有一些换行符,AngularJS会忽略它们。如何使其保留换行符? 问题答案: 这只是基本的HTML。AngularJS对此不会做任何改变。您可以改用标签: 或使用CSS: 如果包含HTML代码,则可以使用: 不要忘记包括ngSanitize:

  • 问题内容: 我正在使用文本区域使用户能够输入评论。但是,如果用户输入新行,则新行在输出时不会出现。有什么办法可以使换行符停留。 知道如何保存换行符吗? 问题答案: 两种解决方案: PHP功能: 例如, 将输入内容包装在标签中。