引用YAML(特拉维斯CI)

时间:2012-05-13 14:54:44

标签: formatting escaping yaml travis-ci string-literals

我如何在YAML中逃脱整条线?我想在列表中包含json='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}' ,但我无法将其解析为字符串。我可以在整行上放置单引号,但是我必须在我的字符串中删除每一个引号,这使得它很难阅读。该字符串将作为Travis CI

中的bash命令运行

2 个答案:

答案 0 :(得分:9)

最优雅的解决方案是使用literal style |指示符和-修饰符来删除最终换行符。这样就没有必要的额外报价了。

如果这个标量恰好是YAML文件中唯一的用法:

|-
  json='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}'

如果它是键abc的映射值:

abc: |-
  json='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}'

或者如果它是列表的一部分:

- |-
  json='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}'

答案 1 :(得分:1)

我不确定是否有一个解决方案可以使字符串的转义变得容易阅读。

仅供参考,这就是该字符串看起来像转义的内容:

script: ! 'your_cmd json=''{"title": "travis_saulshanabrook_site","key": "''$(cat ~/.ssh/id_rsa.pub)''"}'''