Linux

如何在 bash 腳本的 curl 命令中傳遞變數

  • October 29, 2022

我正在創建一個需要傳遞變數的 bash 腳本 $ matchteams & $ 匹配時間進入下面的 curl 命令

curl -X POST \
 'http://5.12.4.7:3000/send' \
 --header 'Accept: */*' \
 --header 'User-Agent: Thunder Client (https://www.thunderclient.com)' \
 --header 'Content-Type: application/json' \
 --data-raw '{
 "token": "abcdjbdifusfus",
 "title": "$matchteams | $matchtime",
 "msg": "hello all",
 "channel": "1021890237204529235"
}'

有人可以幫幫我嗎

單引號內的文本被視為文字:

--data-raw '{
 "token": "abcdjbdifusfus",
 "title": "$matchteams | $matchtime",
 "msg": "hello all",
 "channel": "1021890237204529235"
}'

(變數周圍的雙引號也被視為文字。)在這種情況下,您需要從單引號中取出,以便 shell 解析和擴展變數,或者將整個字元串括在雙引號中,轉義適當的文字雙引號:

# Swapping between single quote strings and double quote strings
--data-raw '{
 "token": "abcdjbdifusfus",
 "title": "'"$matchteams | $matchtime"'",
 "msg": "hello all",
 "channel": "1021890237204529235"
}'

# Enclosing the entire string in double quotes with escaping as necessary
--data-raw "{
 \"token\": \"abcdjbdifusfus\",
 \"title\": \"$matchteams | $matchtime\",
 \"msg\": \"hello all\",
 \"channel\": \"1021890237204529235\"
}"

請記住,它"abc"'def'是由 shell 擴展的,abcdef因此交換引用樣式的中間字元串是完全可以接受的。總的來說,我傾向於使用第一種風格。

引用自:https://unix.stackexchange.com/questions/722906