2012-05-13 12 views
9

Wie würde ich eine ganze Zeile in YAML entkommen? Ich möchte json='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}' in einer Liste haben, aber ich kann es nicht in eine Zeichenfolge analysieren. Ich kann die ganze Zeile in einfache Anführungszeichen setzen, aber dann müsste ich jedes einzelne Zitat in meiner Zeichenkette umgehen, was es sehr schwer macht, es zu lesen. Die Zeichenfolge wird als Bash-Befehl in Travis CIZitieren von YAML (für Travis CI)

Antwort

8

Die eleganteste Lösung ist es, die literal style| Indikator zu verwenden, mit dem - Modifikator die endgültige Newline abzustreifen. Auf diese Weise sind keine zusätzlichen Zitate erforderlich.

Wenn diese skalaren geschieht das einzige, was in einer YAML-Datei verwenden sein:

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

wenn es ein Zuordnungswert für Schlüssel abc ist:

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

oder wenn es Teil eines Liste:

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

ausgeführt werden Ich bin mir nicht sicher, es gibt eine Lösung, die Escapes macht und macht es einfach zu lesen.

FYI ist es das, was die Zeichenfolge wie entkam aussieht:

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