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.