如何在YAML中的“脚本:”中使用多行命令?

hgiesel:

我有一个使用的存储库Travis CI,并且在其中.travis.yml有以下行:

script:
- vim -Nu <(cat <<-EOF
  set nocompatible |
  filetype off
  EOF
  ) -c 'Script' > /dev/null

遗憾的是,这是行不通的,因为它被转换为一行并按以下方式执行:

vim -Nu <(cat <<-EOF set no compatible | filetype off | EOF ) -c 'Script' > /dev/null

这使得EOF标记无法正常工作,因为EOF需要将其放在一行中。一种替代方法是只使用常规引号,如下所示:

script:
- vim -Nu <(cat 'set nocompatible |
  filetype off
  ) -c 'Script' > /dev/null

哪个可行,也很好,但是我觉得必须有一种方法可以在.travis.yml。中插入换行符我现在有替代方案,但将来可能没有。你是怎么做到的?

安通

在YAML中,您可以通过使用""引号和转义换行符(\n来在标量中指定换行符,或者,对于您的情况,可以使用文字样式块标量来指定换行符

script:
- |
  vim -Nu <(cat <<-EOF
  set nocompatible |
  filetype off
  EOF
  ) -c 'Script' > /dev/null

这是一个标量,从带有|(管道符号)的行开始,然后是保留了换行符的多行。

  • 这些行通常是缩进的(例外:单个顶级文字样式块标量)。
  • 之后|可以有修饰符:1- 9,当第一行以空格开头时使用;+-以影响最终换行符的剥离(通常合为一体)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Shell脚本中使用at命令?

如何在yml脚本中调用多个多行命令?

如何在bash脚本中使用awk处理多行记录?

在bash脚本中,如何在命令中使用变量并分配给新变量?

如何在YAML密钥中写多行?

如何在终端命令ocaml中使用模块和脚本?

如何在Jenkins管道脚本中使用源命令

如何在shell脚本中使用source命令?

如何在mv命令中使用shell脚本变量

如何在系统命令中使用awk脚本的shell变量?

如何在Shell脚本中使用setarch uname命令

如何在python脚本中使用此FFMPEG命令?

Bash shell 脚本,如何在命令中使用管道

如何在Shell脚本中使用vi命令?

如何在 shell 脚本中使用 `time` 命令?

如何在Windows中使用带有多行文本的命令提示符在Windows中创建文件?

如何在doctest中的QuickCheck中使用多行输入?

如何在shell脚本中逐行读取多行输出命令行?

如何在 Azure DevOps YAML 构建定义的一个构建过程中使用两个脚本命令?

如何在多行脚本中使用json输入传递GitLab变量?

如何在Jenkins Groovy的多行shell脚本中使用Groovy定义的和OS系统变量

如何在Shell脚本中注释多行命令?

如何在docker-compose.yml中使用多行命令标志配置MySQL实例

在Linux中使用mail命令时,如何在电子邮件正文中回显多行?

如何在命令行中使用 perl 替换正则表达式多行 dotall

如何在cloudformation的`!If`条件中使用多行?

如何在Dockerfile中使用多行EOF

如何在shell脚本中使用grep在while循环中使用命令否定?

如何在Windows命令行中的文件名和批处理脚本中使用日语字符?