Linux
cURL POST bash 腳本將單引號添加到帶空格的變數中
前 3 個變數將始終沒有空格。第四個“
slacksitename
”有空格ip=“x.x.x.x" record_name=“demo.xyz" slackuri:”WEBHOOK" slacksitename:”123 Main St"
使用 cURL 呼叫時
curl -X POST -H 'Content-type: application/json' --data '{"text":"’$slacksitename': '$ip' '$record_name' DDNS updated.”}’ $slackuri
輸出如下:
curl -X POST -H 'Content-type: application/json' --data '{"text":"123' Main 'St: x.x.x.x demo.xyz DDNS updated."}' https://hooks.slack.com/services/…….. curl: (6) Could not resolve host: Main curl: (3) unmatched close brace/bracket in URL position 59: St: x.x.x.x demo.xyz DDNS updated."
有誰知道它為什麼要添加單引號
123' Main 'St
?以及我如何將整個變數視為一個字元串而不是拆分它(這就是我認為它正在做的事情)?謝謝
更新:已解決^^
跟進:
這可能與原始問題的構想相同:
我有一個變數,它是我想通過 cURL 發送的 JSON 輸出。我假設問題再次是引號,但 JSON 輸出可能會改變(引號數)。有沒有辦法在消息中用新行發送帶有 cURL 的原始數據?謝謝
DUMPING RESULTS:\n{"result":{"id":"ppbkbz2ezmxen11vvpi65chsro1vki5y","zone_id":"unuM0sR1gSrQ37r9fGC1sYKFZOP0DzJM","zone_name":"demo.xyz","name":"1.demo.xyz","type":"A","content":"x.x.x.x","proxiable":true,"proxied":false,"ttl":1,"locked":false,"meta":{"auto_added":false,"managed_by_apps":false,"managed_by_argo_tunnel":false,"source":"primary"},"created_on":"2020-06-14T19:13:57.096688Z","modified_on":"2021-10-16T16:57:49.269274Z"},"success":true,"errors":[],"messages":[]}."
您在 bash 中使用未引用的變數,並且對發生分詞感到驚訝。這是應該發生的事情。
您的問題中還有非標準引號,我認為這是因為自動格式化。但請注意,
"
與 不一樣”
,'
也不一樣ʼ
。
curl -X POST -H 'Content-type: application/json' --data '{"text":"’$slacksitename': '$ip' '$record_name' DDNS updated.”}’ $slackuri
在您的命令行中,您正在引用
{"text":"
並附加未引用的內容$slacksitename
,這意味著將在其上進行分詞。最終結果將是 3 個單獨的參數:{"text":"123
,Main
,St
. 第三個參數將被連接,:
它本身將與未引用的內容連接,$ip
因此我們是該變數中存在的任何空格,同樣會發生。這本質上是 bash 101,除非您知道自己在做什麼,否則請引用您的變數。