我需要在YAML文件中使用这段代码来从文件中删除字符,但是在YAML#
上是注释,不能在#
之后全部执行我要执行的示例:echo $(tr -d '[[]#,"]')
是否有任何解决方法来实现我想要的?
在您的情况下,最简单的可能是使用折叠块样式,因为您的tr
中确实有简单的双引号,并且使用引号字符串将需要您转义字符,这可能是一个痛苦。
但是为了完整起见,这里有几种可能的方法:
foo: "# I am not a comment, as I am enclosed in double quoted string"
bar: '# me neither, as I am enclosed in a single quoted string'
baz: |
# so ain't I, in a literal style block
qux: >
# I don't differ from the three above, in a folded style block
那么,在你的例子中,你可以这样做:
my_command: >-
echo $(tr -d '[[]#,"]')
这只是YAML语法的问题。您可以将命令括在单引号或双引号中,并使用反斜杠转义内引号()
例如,使用单引号并使用'
转义文本内部单引号:
script:
- 'echo $(tr -d '[[[]#,"]')'
或者用双引号:
script:
- "echo $(tr -d '[[]#,"]')"
您也可以使用其他不需要转义的字符串样式,如另一个答案所述。