Ho uno script di shell che sto usando per pubblicare contenuti su un canale di Hipchat. Funziona bene fino a quando non provo a inviare un messaggio con caratteri che devono essere salvati. Ho eseguito il comando in questo modo (si noti la barra rovesciata aggiuntiva in là per causare un problema)Come posso inviare una stringa json con curl che ha caratteri che devono essere salvati?
/usr/local/bin/hipchatmsg.sh "my great message here \ " red
E il mio codice nel mio script bash (hipchatmsg.sh) che conta è questo:
# 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
Se provo ed eseguire il comando di cui sopra con i caratteri che hanno bisogno di fuga, mi metterò un errore come questo:
{
"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"
}
}
ho trovato qualcosa tipo di simile qui dove il miglior consiglio è stato quello di provare a inviare il montante flessione con - -da ta-UrlEncode, così ho provato in questo modo:
Ma questo non ha avuto effetto.
Cosa mi manca qui?
Codifica URL e codifica JSON sono due cose diverse; "arricciare" non sa di JSON, però. – chepner