web-dev-qa-db-ja.com

bash curlステートメントに「&」文字を含める方法

Bashでcurlを使用してWebページをダウンロードしようとしていますが、URLの&記号は、希望どおりの文字として解釈されません。シンボル&は単なる退屈なキャラクターであり、特別なものではないことをbashに納得させるためのアイデアはありますか?

81
Chernoff

&シンボルを単一引用符で囲むと機能するようです。つまり、http://www.example.com/page.asp?arg1=${i}'&'arg2=${j}などのURLをcurlで使用すると、要求されたWebページが返されます。

20
Chernoff

URL全体を二重引用符で囲むと、問題に対処できます。

97
mjuarez
curl "http://www.example.com?m=method&args=1"

GET URLの区切り文字として&を使用していますか?または、データの中にありますか?

データ内にある場合は、HTML文字にエンコードする必要があります。そうでない場合は、引用符で囲みます。

&のエンコードは、URLで%26になります。

curl "http://www.example.com?m=this%26that
33
Matt Clark

エスケープ「&」文字を試す代わりに、以下に示すように、-dパラメーターを使用してPOST要求でhttp urlパラメーターを指定できます。

curl -X POST http://www.example.com \
-d arg1=this \
-d arg2=that

リクエストがGETの場合、-Gオプションも追加する必要があります。これは、GETリクエストでデータを送信するようcurlに指示します。

curl -X GET -G http://www.example.com \
-d arg1=this \
-d arg2=that
13
noego

%26の代わりに&を使用できます。エンティティコードは正常に機能します。

6
Seralto