角かっこ付きの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.