Mam skrypt powłoki, którego używam do publikowania rzeczy na kanale hipchat. Działa dobrze, dopóki nie spróbuję wysłać wiadomości zawierającej znaki, które wymagają ucieczki. Biegnę tak jak polecenie (zwróć uwagę na dodatkowy ukośnik w tam, aby spowodować problem)Jak mogę napisać ciąg json z curl, który ma znaki, które potrzebują ucieczki?
/usr/local/bin/hipchatmsg.sh "my great message here \ " red
i mój kod w moim skrypcie bash (hipchatmsg.sh), która ma znaczenie to:
# Make sure message is passed
if [ -z ${1+x} ]; then
echo "Provide a message to create the new notification"
exit 1
else
MESSAGE=$1
fi
// send locally via curl
/usr/bin/curl -H "Content-Type: application/json" \
-X POST \
-k \
-d "{\"color\": \"$COLOR\", \"message_format\": \"text\", \"message\": \"$MESSAGE\" }" \
$SERVER/v2/room/$ROOM_ID/notification?auth_token=$AUTH_TOKEN &
// $server and $room are defined earlier
exit 0
Jeśli staram się uruchomić komendę powyżej wszelkich znaków, które muszą uciekających, będę się błąd jak poniżej:
{
"error": {
"code": 400,
"message": "The request body cannot be parsed as valid JSON: Invalid \\X escape sequence u'\\\\': line 1 column 125 (char 124)",
"type": "Bad Request"
}
}
Znalazłem coś niby podobna tu gdzie najlepszym rozwiązaniem była próba wysłania curl posta - -da Ta-urlencode, więc próbowałem w ten sposób:
Ale to nie przyniosło efektu.
Czego mi tu brakuje?
Kodowanie URL i kodowanie JSON to dwie różne rzeczy; 'curl' nie zna jednak JSON. – chepner