2012-05-13 3 views
9

Как мне избежать целой строки в YAML? Я хочу иметь json='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}' в списке, но я не могу заставить его анализировать строку. Я могу поместить одинарные кавычки по всей строке, но тогда мне придется избегать каждой отдельной цитаты в моей строке, что делает ее очень трудной для чтения. Строка будет работать как команда Баш в Travis CIЦитирование YAML (для Travis CI)

ответ

8

Самое элегантное решение заключается в использовании индикатора 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

Я не уверен, что есть решение, которое делает побег, что струнные и делает его легким для чтения.

FYI это то, что эта строка выглядит как спасся:

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