Estoy usando git, y luego publico el mensaje de confirmación y otros bits como una carga JSON en un servidor.Escapar caracteres en bash (para JSON)
Actualmente tengo:
MSG=`git log -n 1 --format=oneline | grep -o ' .\+'`
que establece MSG a algo como:
Calendar can't go back past today
continuación
curl -i -X POST \
-H 'Accept: application/text' \
-H 'Content-type: application/json' \
-d "{'payload': {'message': '$MSG'}}" \
'https://example.com'
Mi verdadero JSON tiene un par de campos.
Esto funciona bien, pero por supuesto cuando tengo un mensaje de confirmación como el de arriba con un apóstrofo, el JSON no es válido.
¿Cómo puedo escapar de los caracteres requeridos en bash? No estoy familiarizado con el idioma, por lo que no estoy seguro de por dónde empezar. Reemplazar '
con \'
haría el trabajo como mínimo, sospecho.
Como una nota extra, JSON se supone que utilizar el doble (no única) cita en torno a valores, por lo que muchos (pero no todos) los analizadores rechazaría lo anterior, incluso si estaba en buenas condiciones estructurales y es cubierto correctamente. – polm23