作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 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
这是一个标量,以带有 |
(管道符号)的行开头,后跟保留换行符的多行。
|
之后可以有修饰符:1
-9
,当你的第一行以空格开头时使用; +
、-
影响最终换行符的剥离(通常合并为一个)。关于bash - 如何在 YAML 中使用 'script:' 中的多行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38745696/
我是一名优秀的程序员,十分优秀!