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


97

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


これはあなたを助ける必要があり、次のトピックを見ている- stackoverflow.com/questions/2067969/...
morgents

私が交換しようとした&との記号を\&'&'"&"^&しかし正確に評価するために、URLを取得することができていません。実際、'&'Terminal.appからcurlコマンドを実行すると機能しますが、bashスクリプトに配置してループにラップして実行すると失敗します。
Chernoff

回答:


121

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


9
変数を解決する必要がない限り、一重引用符の方が適している場合があります。
jpm

URL全体を引用符で囲むと、式${i}が値を返しません。
Chernoff

1
私の場合、二重引用符は失敗しましたが、単一引用符はうまくいきました。
abeboparebop 2016年

3
引用符の入力に使用されているプログラムには注意してください。シェルスクリプトの編集を急いでいる間に、テキスト編集プログラムを使用しました。それはまっすぐな二重引用符の代わりに斜めの引用符を置きました。これは本当にスクリプトを台無しにし、問題を見つけるのを難しくします!
デビッド

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

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

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

のエンコーディングはURLに&含める必要が%26あります。

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

&シンボルをデータの一部として使用しています。これは、あなたが示したとおりです。問題は、数値の代わりにを使用して${i}いることです。なのでhttp://www.example.com?m=method&args=${i}、URLとして評価してもらいたいです。
Chernoff

3
URLを示した方法では、GET変数のデリミタとして「&」を使用しているため、$ [i]に「&」を含むデータがあると混乱します。その場合は、URLエンコードする必要があります。&=%26
Matt Clark

1
インターネット全体を検索しても、解決策は見つかりませんでした。@MattClarkあなたはヒーローです。URLエンコードされただけで、これはデータの一部であり、スクリプトは正常に機能しています。
Haris ur Rehman 2015

1
2番目のコードスニペットの終わりに "がありませんか?
David

23

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


2
将来の見解が明確になるように、質問に議論の要件を含める必要があります。
Manatax 2014

なぜこの回答は遅れるのですか?この回答はaccepedしなければならないstackoverflow.com/a/13339492/2898694
Sharikovウラジスラフを

13

エスケープ「&」文字を試す代わりに、以下に示すように、-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

これが一番の答えです!どうも!
2018年

これでうまくいきました。二重引用符を追加しても機能しませんでした。
Juhog

9

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.