CURL GETリクエストにUnix Shell変数を追加する最良の方法

CURL GETリクエストにUnix Shell変数を追加する最良の方法

curl –X GET次のリンクでコマンドを使用するとします。

“$WEBSITE_URL/ACTION_NAME/ACTION1;id=$ID?Command=TEST&id1=$ID1&id2=$ID2&id3=$ID3”

ご覧のとおり、文字列には$変数がいくつかあります。明らかに、これらの変数の始まりと終わりをBashに知らせずに文字列に追加するだけでは機能しません。

だから私が見つけたさまざまなタグ(例えば、「$ Variable」、$ {Variable}など)を使って変数を分離し、文字列が通常の要求のように見え、動作するようにしようとしましたが、何も機能しませんでした。これには役立ついくつかの関連トピックがありますが、それを機能させるために必要な情報はまだありません。おそらく私のケースは基本的な例とは少し異なり、ここに何かが欠けているからです。どんなアイデアがありますか?乾杯!

答え1

具体的には、特殊文字を正しくエスケープしていないようです;&?

また、サイトの機能かもしれませんが、二重引用符は必要なものとは異なります"

私は次を使うでしょう:

# curl "${WEBSITE_URL}/${ACTION_NAME}/${ACTION1}\;id=${ID}\?Command=TEST\&id1=${ID1}\&id2=${ID2}\&id3=${ID3}"

答え2

bash名前は、変数名に有効なすべての文字を使用して決定されます$。つまり、最初の無効な文字は名前文字列を制限します。

疑わしいときに${Variable}使用してください。すでにこれを述べたので、問題は異なります。

答え3

文字列を変数として生成し、その変数をカールに渡します。

string="${WEBSITE_URL}/ACTION_NAME/ACTION1;id=${ID}?Command=TEST&id1=${ID1}&id2=${ID2}&id3=${ID3}"
echo $string #this should get the right string to be passed to curl
curl -X GET $string

関連情報