Uciekające znaki w bashu (dla JSON)

Używam git, a następnie umieszczam komunikat zatwierdzenia i inne bity jako ładunek JSON na serwerze.

Obecnie mam:

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

który ustawia MSG na coś takiego:

Calendar can't go back past today

następnie

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

Mój prawdziwy JSON ma jeszcze kilka pól.

Działa to dobrze, ale oczywiście, gdy mam komunikat zatwierdzenia, taki jak powyżej z apostrofem, JSON jest nieprawidłowy.

Jak mogę uniknąć znaków wymaganych w bashu? Nie znam języka, więc nie wiem od czego zacząć. Zastępuje' z\' podejrzewam, że wykonałaby to co najmniej.