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?

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.

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.