Bashでcurlを使用してWebページをダウンロードしようとしていますが、URLの&
記号は、希望どおりの文字として解釈されません。シンボル&
は単なる退屈なキャラクターであり、特別なものではないことをbashに納得させるためのアイデアはありますか?
&
シンボルを単一引用符で囲むと機能するようです。つまり、http://www.example.com/page.asp?arg1=${i}'&'arg2=${j}
などのURLをcurlで使用すると、要求されたWebページが返されます。
URL全体を二重引用符で囲むと、問題に対処できます。
curl "http://www.example.com?m=method&args=1"
GET URLの区切り文字として&を使用していますか?または、データの中にありますか?
データ内にある場合は、HTML文字にエンコードする必要があります。そうでない場合は、引用符で囲みます。
&
のエンコードは、URLで%26
になります。
curl "http://www.example.com?m=this%26that
エスケープ「&」文字を試す代わりに、以下に示すように、-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
%26
の代わりに&
を使用できます。エンティティコードは正常に機能します。