Экранирование символов в bash (для JSON)

Я использую 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? Я не знаю языка, поэтому не знаю, с чего начать. Я подозреваю, что замена 'на \'сделает работу как минимум.

50
задан 7ochem 22 February 2016 в 04:12
поделиться