Escapezeichen in Bash (für JSON)

Ich verwende git und poste dann die Commit-Nachricht und andere Bits als JSON-Payload auf einem Server.

Derzeit habe ich:

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

das setzt MSG auf so etwas wie:

<code>Calendar can't go back past today
</code>

dann

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

Mein echter JSON hat noch ein paar Felder.

Dies funktioniert einwandfrei, aber natürlich ist JSON ungültig, wenn ich eine Commit-Nachricht wie die oben genannte mit einem Apostroph darin habe.

Wie kann ich den in bash erforderlichen Zeichen entkommen? Ich kenne die Sprache nicht und weiß nicht, wo ich anfangen soll. Ersetzen' mit\' würde den Job zumindest machen, vermute ich.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage