Curl
curl json正文中的$ 1現在可以使用
我有一個這樣的腳本:
#!/bin/bash curl --request POST --url http:/myUrl.com/etc --header 'content-type: application/json' --data '{"myId": $1, "services": {"ENABLE_THE_SERVICE": "1"}}';
然後,當我嘗試執行時: ./myScript.sh 77777 出現如下錯誤:
{"code":"BAD_REQUEST","message":"[line: 1, column: 17] Unexpected character ('$' (code 36)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [Source: org.jboss.resteasy.core.interception.MessageBodyReaderContextImpl$InputStreamWrapper@45771071; line: 1, column: 17]"}
你知道如何讓它工作嗎?謝謝..
不要單引號包含 的字元串
$1
,這將阻止 shell 擴展它。反而:
curl --request POST \ --url 'http:/myUrl.com/etc' \ --header 'content-type: application/json' \ --data '{"myId": '"$1"', "services": {"ENABLE_THE_SERVICE": "1"}}'
data
這會在 .之前結束字元串的第一部分$1
,然後將其本身用雙引號括起來$1
,並將其與新的單引號字元串與其餘數據內容連接起來。這假定 in 中的字元串
$1
已經是 JSON 編碼的字元串。如果不是,您可能希望使用jq
來構造數據有效負載:curl --request POST \ --url 'http:/myUrl.com/etc' \ --header 'content-type: application/json' \ --data "$( jq -nc --arg id "$1" '{"myId": $id, "services": {"ENABLE_THE_SERVICE": "1"}}' )"