it-swarm.com.de

Übergeben einer URL mit eckigen Klammern

Wenn ich versuche, eine URL an curl zu übergeben, die Klammern enthält, schlägt dies mit einem Fehler fehl:

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

Wenn ich jedoch beide Klammern verstecke, scheint es zu funktionieren:

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

Interessanterweise benutze ich einen Backslash, um zu entkommen nur die erste eckige Klammer schlägt mit Fehlercode 20497 unbemerkt fehl:

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

Meine Frage ist, wie man dieses für allgemeine Fälle regelt? Gibt es ein Argument, mit dem URLs automatisch ausgeblendet werden, oder eine Beschreibung der Zeichen, die vor der Übergabe an curl ausgeblendet werden müssen?

278
chaimp

Egal, ich habe es in den Dokumenten gefunden:

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