Passando um URL com colchetes para enrolar

305

Se eu tentar passar um URL para ondular que contenha colchetes, ele falhará com um erro:

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

No entanto, se eu escapar dos dois colchetes, ele parece funcionar:

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

Curiosamente, eu uso uma barra invertida para escapar apenas do primeiro colchete que falha silenciosamente com o código de erro 20497:

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

Minha pergunta é como corrigir isso em casos gerais? Existe um argumento que escapará dos URLs automaticamente ou uma descrição dos caracteres que precisam ser escapados antes de passar para o curl?

chaimp
fonte

Respostas:

482

Não importa, eu encontrei nos documentos:

-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.
chaimp
fonte
10
Para mim, não funcionou. Eu tive que adicionar um \ antes de cada colchete
jesusperaltac
@jesusperaltac Mesmo para mim, com o MacOS
Jean
Para mim, funcionou - no OS X High Sierr, faça a rotação 7.54.0 (x86_64-apple-darwin17.0) libcurl / 7.54.0.
21418 Shade
1
@Jesusperaltac @Jean para mim ele funciona no Windows se o comando forcurl -L -o <local_file_name> -g <url>
Steven Liang
Trabalhou para mim CentOS 7.1. Versão do Curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
PatS
0

Globbing usa colchetes, daí a necessidade de escapar deles com uma barra \. Como alternativa, a seguinte opção de linha de comando desabilitará o globbing:

--globoff(ou a versão de curto opção: -g)

Ex:

curl --globoff https://www.google.com?test[]=1
Marca
fonte