Escapando caracteres no bash (para JSON)

Eu estou usando git, então postando a mensagem de commit e outros bits como um payload JSON para um servidor.

Atualmente tenho:

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

que define o MSG para algo como:

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

então

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

Meu verdadeiro JSON tem outro par de campos.

Isso funciona bem, mas é claro que quando eu tenho uma mensagem de commit como a que está acima com um apóstrofo, o JSON é inválido.

Como posso escapar dos caracteres necessários no bash? Eu não estou familiarizado com o idioma, por isso não tenho certeza por onde começar. Substituindo' com\' faria o trabalho no mínimo eu suspeito.

questionAnswers(10)

yourAnswerToTheQuestion