簡體   English   中英

帶有大量單引號和雙引號的命令的Bash腳本

[英]Bash script with a command with lots of single and double quotes

我需要使用curl命令:

curl -d'{“auth_token”:“YOUR_AUTH_TOKEN”,“text”:“嘿,看看我能做什么!” }'\\ http:// localhost:3030 / widgets / welcome

在bash腳本中,而不是“嘿,看看我能做什么!” “YOUR_AUTH_TOKEN”之后 ; 我需要一個變量$ p

這是我第一次嘗試使用bash腳本並閱讀有關引號等的教程,但我仍然無法使其工作。

最簡單的方法是從here文檔(一種動態創建的臨時文件)中讀取數據,而不是嘗試將整個事物作為字符串引用:

curl -d@- http://localhost:3030/widgets/welcome <<EOF
{ "auth_token": "YOUR_AUTH_TOKEN",
  "text": "$p" }
EOF

如果-d的參數以@開頭,則參數的其余部分將被視為包含數據的文件的名稱。 文件名-表示標准輸入, curl的標准輸入由EOF標記之間的線提供。

另一種方法是雙引號字符串並轉義所有嵌入的雙引號。 呸。

... -d "{\"auth_token\": \"YOUR_AUTH_TOKEN\", \"text\": \"$p\"}" ...

替代chepner非常好的答案:

data=$( printf '{"auth_token":"YOUR_AUTH_TOKEN","text":"%s"}' "$p" )
curl -d "$data" http://localhost:3030/widgets/welcome

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM