2012-05-13 10 views
9

Jak mógłbym uciec z całej linii w YAML? Chcę mieć json='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}' na liście, ale nie mogę go sparsować na ciąg znaków. Mogę umieścić pojedyncze cytaty na całej linii, ale wtedy będę musiał uciec z każdego cytatu w moim ciągu, co bardzo utrudnia czytanie. Łańcuch zostanie uruchomiony jako komenda bash w Travis CICytując YAML (dla Travis CI)

Odpowiedz

8

Najbardziej eleganckim rozwiązaniem jest użycie wskaźnika literal style|, z modyfikatorem - rozebrać końcową linią. W ten sposób nie ma potrzeby dodatkowych kwotowań.

Jeśli to skalarna okazuje się być jedyną rzeczą w użyciu plików YAML:

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

jeśli jest to wartość mapowanie dla kluczowego abc:

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

lub jeśli jest częścią lista:

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

Nie jestem pewien, czy istnieje rozwiązanie, które tworzy linie ucieczki, które ciągi i ułatwiają czytanie.

FYI właśnie to, że ciąg wygląda uciekł:

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