Escape-Zeichen in bash (für JSON)

Bin ich mit git, dann die Buchung der commit-Nachricht und die anderen bits als JSON-payload an einen server.

Derzeit habe ich:

MSG=`git log -n 1 --format=oneline | grep -o ' .\+'`

setzt MSG etwas wie:

Calendar can't go back past today

dann

curl -i -X POST \
  -H 'Accept: application/text' \
  -H 'Content-type: application/json' \
  -d "{'payload': {'message': '$MSG'}}" \
  'https://example.com'

Mein real JSON hat ein paar Felder.

Dies funktioniert gut, aber natürlich, wenn ich eine commit-Nachricht wie die oben mit einem Apostroph, der JSON ist ungültig.

Wie kann ich entkommen der gewünschten Zeichen in der bash? Ich bin nicht vertraut mit der Sprache, so bin mir nicht sicher wo zu beginnen. Ersetzen ' mit \' würde den job tun, zu mindestens vermute ich.

InformationsquelleAutor der Frage Rich Bradshaw | 2012-04-07

Schreibe einen Kommentar