我有一個shell腳本我一直用來發布到hipchat頻道的東西。它工作正常,直到我嘗試併發送消息需要轉義的字符。我運行像這樣的命令(注意在那裏額外的反斜線導致問題)如何發佈帶有需要轉義字符的捲曲的json字符串?
/usr/local/bin/hipchatmsg.sh "my great message here \ " red
而我在我的bash腳本(hipchatmsg.sh)代碼,重要的是這樣的:
# 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
如果我嘗試運行上面與需要轉義的任何字符的命令,我會得到一個錯誤這樣的:
{
"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"
}
}
我找到了一種類似於在這兒,最好的建議是嘗試發送捲曲後用 - - 天ta-urlencode,所以我嘗試像這樣:
但是這沒有效果。
我在這裏錯過了什麼?
URL編碼和JSON編碼是兩回事;不過,curl並不知道JSON。 – chepner