角かっこ付きのURLをcurlに渡す


305

角かっこを含むURLをcurlに渡そうとすると、エラーが発生して失敗します。

$ curl 'http://www.google.com/?TEST[]=1'
curl: (3) [globbing] illegal character in range specification at pos 29

ただし、両方の角かっこをエスケープすると、機能するように見えます。

$ curl 'http://www.google.com/?TEST\[\]=1'

興味深いことに、バックスラッシュを使用して、エラーコード20497で失敗する最初のブラケットのみをエスケープします。

$ curl 'http://www.google.com/?TEST\[]=1'
$ echo $!
20497

私の質問は、一般的なケースでこれを修正する方法ですか?URLを自動的にエスケープする引数、またはcurlに渡す前にエスケープする必要がある文字の説明はありますか?

回答:


482

気にしないで、私はそれをドキュメントで見つけました:

-g/--globoff
              This  option  switches  off  the "URL globbing parser". When you set this option, you can
              specify URLs that contain the letters {}[] without having them being interpreted by  curl
              itself.  Note  that  these  letters  are not normal legal URL contents but they should be
              encoded according to the URI standard.

10
私にとっては、うまくいきませんでした。各角括弧の前に\を追加する必要があった
jesusperaltac

@jesusperaltac私にも同じ、macOS
Jean

私にとってはうまくいきました-OS X High Sierrでは、curl 7.54.0(x86_64-apple-darwin17.0)libcurl / 7.54.0。
シェード

1
@Jean @jesusperaltac私にとっては、コマンドがWindowsで機能する場合curl -L -o <local_file_name> -g <url>
Steven Liang

私のために働いたCentOS 7.1。Curlバージョン7.29.0(x86_64-redhat-linux-gnu)libcurl / 7.29.0)
PatS

0

グロビングはブラケットを使用するため、スラッシュでエスケープする必要があり\ます。または、次のコマンドラインスイッチでグロビングを無効にします。

--globoff(または短いオプションのバージョン:-g

例:

curl --globoff https://www.google.com?test[]=1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.