我有一個 JSON 串列,我正在嘗試使用 curl 將一個特定的鍵:值從串列發布到松弛的 webhook。我正在使用 jq 來獲取特定鍵的值
這作業正常:
echo {{job.message}} | jq -r '.[0] | .status'
這不起作用:
curl -vvv -X POST -H "Content-type: application/json" --data \"{\"text\":\"{{job.message}} | jq -r ''.[0] | .status''\"}\" https://hooks.slack.com/services/xxxxx
job.message 是一個帶有 json 串列的變數
當我在 shell 中使用 echo 輸出結果時,它作業正常,但是當我使用 curl 時,它顯示無效的有效負載或 .key 未找到,即使密鑰存在。
uj5u.com熱心網友回復:
在您的text價值中,沒有提到 command echo ...,您可以使用子外殼來評估結果。此外,您可以使用單引號--data代替雙引號來避免轉義:
curl -vvv -X POST \
-H "Content-type: application/json" \
--data '{"text":"'"$(echo $job_message | jq -r '.[0].status')"'"}' \
"https://hooks.slack.com/services/xxxxx"
您也可以jq -n用來構建 JSON 物件:
curl -vvv -H "Content-type: application/json" \
-d "$(jq -n --arg text $job_message '{"text": ($text | fromjson)[0].status}')" \
"https://hooks.slack.com/services/xxxxx"
您還可以jq像這樣將命令輸出通過管道傳輸到主體,并jq僅用于構建 json 物件:
jq -n --arg text $job_message '{"text": ($text | fromjson)[0].status}' | \
curl -vvv -H "Content-Type: application/json" -d @- "https://hooks.slack.com/services/xxxxx"
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/321167.html
上一篇:TCP的基本認識
下一篇:十三,部署微服務到K8S
