Я использую git, затем отправляю сообщение коммита и другие биты в виде полезной нагрузки JSON на сервер.
В настоящее время у меня есть:
MSG=`git log -n 1 --format=oneline | grep -o ' .\+'`
, который устанавливает MSG примерно так:
Calendar can't go back past today
затем
curl -i -X POST \
-H 'Accept: application/text' \
-H 'Content-type: application/json' \
-d "{'payload': {'message': '$MSG'}}" \
'https://example.com'
В моем реальном JSON есть еще пара полей.
Это работает нормально, но, конечно, когда у меня есть сообщение фиксации, такое как приведенное выше, с апострофом в нем, JSON недействителен.
Как экранировать символы, необходимые в bash? Я не знаю языка, поэтому не знаю, с чего начать. Я подозреваю, что замена '
на \'
сделает работу как минимум.