Passare un URL con parentesi quadre per arricciare


305

Se provo a passare un URL per arricciare che contiene parentesi, non riesce con un errore:

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

Tuttavia, se sfuggo a entrambe le parentesi, sembra funzionare:

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

È interessante notare che uso una barra rovesciata per sfuggire solo alla prima parentesi che fallisce silenziosamente con il codice di errore 20497:

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

La mia domanda è come risolvere questo problema generale? C'è un argomento che sfuggirà automaticamente agli URL o una descrizione dei caratteri che devono essere sfuggiti prima di passare all'arricciatura?

Risposte:


482

Poco male, l'ho trovato nei documenti:

-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
Per me non ha funzionato. Ho dovuto aggiungere un \ prima di ogni parentesi quadra
jesusperaltac il

@jesusperaltac Lo stesso per me, con macOS
Jean,

Per me ha funzionato - su OS X High Sierr, curl 7.54.0 (x86_64-apple-darwin17.0) libcurl / 7.54.0.
Ombra

1
@Jean @jesusperaltac per me funziona su Windows se il comando ècurl -L -o <local_file_name> -g <url>
Steven Liang

Ha funzionato per me CentOS 7.1. Versione Curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
PatS

0

Globbing usa le parentesi, quindi la necessità di sfuggirle con una barra \. In alternativa, la seguente opzione della riga di comando disabilita il globbing:

--globoff(o la versione corta-opzione: -g)

Ex:

curl --globoff https://www.google.com?test[]=1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.