[英]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.