Übergeben einer URL mit Klammern zum Einrollen


305

Wenn ich versuche, eine URL an locken 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 beiden Klammern entkomme, scheint es zu funktionieren:

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

Interessanterweise verwende ich einen Backslash, um nur die erste Klammer zu umgehen, die mit dem Fehlercode 20497 stillschweigend fehlschlägt:

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

Meine Frage ist, wie dies für allgemeine Fälle behoben werden kann. Gibt es ein Argument, das URLs automatisch maskiert, oder eine Beschreibung der Zeichen, die maskiert werden müssen, bevor sie an curl übergeben werden?

Antworten:


482

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.

10
Bei mir hat es nicht funktioniert. Ich musste vor jeder eckigen Klammer ein \ hinzufügen
jesusperaltac

@ Jesusperaltac Das gleiche gilt für mich, mit MacOS
Jean

Bei mir hat es funktioniert - unter OS X High Sierr, Curl 7.54.0 (x86_64-apple-darwin17.0) libcurl / 7.54.0.
Schatten

1
@ Jean @ jesusperaltac für mich funktioniert es unter Windows, wenn der Befehl istcurl -L -o <local_file_name> -g <url>
Steven Liang

Arbeitete für mich CentOS 7.1. Curl Version 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
PatS

0

Beim Globbing werden Klammern verwendet, daher muss diese mit einem Schrägstrich entfernt werden \. Alternativ deaktiviert der folgende Befehlszeilenschalter das Globbing:

--globoff(oder die Kurz Option Version: -g)

Ex:

curl --globoff https://www.google.com?test[]=1
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.