web-dev-qa-db-ja.com

このcurlコマンドに変数を追加するにはどうすればよいですか?

テキスト文字列をサーバーに送信するcurlコマンドがあり、テキスト文字列をファイルまたはbash変数から取得する方法を理解しようとしています。コマンドは次のようになります。

curl -X POST -u "apikey:<apikey>"
--header "Content-Type: application/json"
--data '{"text": "<variable>"}'
"<url>"

そこに変数を取得する方法がわかりません。 $ variableと$(<file)で置き換えてみましたが、エコーなしでテキストを吐き出す方法がわからず、curlでエコーできません。

7
NelloDraws

一重引用符で囲まれた文字列を停止し、変数の展開を続け、場合によっては二重引用符で囲み、一重引用符で囲まれた文字列を再開します。

--data '{"text": "'"$variable"'"}'

$variableは、周囲と一緒に正当なJSONを形成するものに拡張する必要があります。そうでない場合、反対側はおそらく非常に満足できないでしょう:)。)

10
PSkocik

ここにもう1つソリューションを追加します。

curl -X POST -u "apikey:${apikey}"
--header "Content-Type: application/json"
--data "{\"text\": \"${variable}\"}"
"${url}"

基本的に、 "は、次の文字列を一緒に処理するための引用符です\"は引用符をエスケープし、${varname}は変数です。

5
Nyos

Curlで使用するJSONを構築するとき、私は heredocs を使用する傾向があります。

curl -s -X POST $URL -d@- <<EOF
[
    {
        "id": 101,
        "text": "$variable"
    }
]
EOF
4
Roger Lipscombe