11

YAML で行全体をエスケープするにはどうすればよいですか? リストに入れたいjson='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}' のですが、文字列に解析できません。行全体を単一引用符で囲むことはできますが、文字列内のすべての単一引用符をエスケープする必要があり、非常に読みにくくなります。文字列はTravis CIで bash コマンドとして実行されます

4

2 に答える 2

11

最も洗練された解決策は、リテラル スタイル |インジケーターを使用し、-修飾子を使用して最後の改行を削除することです。そうすれば、余分な引用符は必要ありません。

このスカラーがたまたま YAML ファイルで唯一のものである場合は、次を使用します。

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

key のマッピング値の場合abc:

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

またはそれがリストの一部である場合:

- |-
  json='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}'
于 2015-06-30T06:42:24.810 に答える
0

その文字列をエスケープして読みやすくする解決策があるかどうかはわかりません。

参考までに、これはその文字列がエスケープされたように見えるものです:

script: ! 'your_cmd json=''{"title": "travis_saulshanabrook_site","key": "''$(cat ~/.ssh/id_rsa.pub)''"}'''
于 2012-10-22T13:27:25.343 に答える