web-dev-qa-db-ja.com

curlにブラケット付きのURLを渡す

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

$ 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'

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

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

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

272
chaimp

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

-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.
424
chaimp