テキスト文字列をサーバーに送信するcurlコマンドがあり、テキスト文字列をファイルまたはbash変数から取得する方法を理解しようとしています。コマンドは次のようになります。
curl -X POST -u "apikey:<apikey>"
--header "Content-Type: application/json"
--data '{"text": "<variable>"}'
"<url>"
そこに変数を取得する方法がわかりません。 $ variableと$(<file)で置き換えてみましたが、エコーなしでテキストを吐き出す方法がわからず、curlでエコーできません。
一重引用符で囲まれた文字列を停止し、変数の展開を続け、場合によっては二重引用符で囲み、一重引用符で囲まれた文字列を再開します。
--data '{"text": "'"$variable"'"}'
($variable
は、周囲と一緒に正当なJSONを形成するものに拡張する必要があります。そうでない場合、反対側はおそらく非常に満足できないでしょう:)。)
ここにもう1つソリューションを追加します。
curl -X POST -u "apikey:${apikey}"
--header "Content-Type: application/json"
--data "{\"text\": \"${variable}\"}"
"${url}"
基本的に、 "
は、次の文字列を一緒に処理するための引用符です\"
は引用符をエスケープし、${varname}
は変数です。
Curlで使用するJSONを構築するとき、私は heredocs を使用する傾向があります。
curl -s -X POST $URL -d@- <<EOF
[
{
"id": 101,
"text": "$variable"
}
]
EOF