Bashスクリプトのcurlコマンド内で変数を渡す方法

Bashスクリプトのcurlコマンド内で変数を渡す方法

変数を渡す必要があるbashスクリプトを作成しています。$matchteamsと$matchtime次のカールコマンドを入力してください

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"
}'

誰かが私を助けることができますか?

ベストアンサー1

一重引用符内のテキストはリテラルとして扱われます。

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

(変数の周囲の二重引用符もリテラルとして扱われます。)この場合、一重引用符を使用してシェルが変数を解析して拡張できるようにするか、リテラル二重引用符を適切にエスケープして文字列全体を二重引用符で囲む必要があります。 :

# 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'シェルによって拡張されるので、引用スタイルabcdefに文字列を置き換えることは完全に許可されていることを覚えておいてください。全体的に私は最初のスタイルを使用する傾向があります。

おすすめ記事