gpt4 book ai didi

bash - 如何在 YAML 中使用 'script:' 中的多行命令?

转载 作者:行者123 更新时间:2023-11-29 08:42:32 26 4
gpt4 key购买 nike

我有一个使用 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) 在标量中指定换行符,或者,这对您的情况来说更自然, 通过使用 literal style block scalar :

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

这是一个标量,以带有 |(管道符号)的行开头,后跟保留换行符的多行。

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

关于bash - 如何在 YAML 中使用 'script:' 中的多行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38745696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com