괄호와 함께 URL을 전달하여 컬


305

대괄호가 포함 된 curl에 URL을 전달하려고하면 오류와 함께 실패합니다.

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

그러나 두 대괄호를 모두 벗어나면 작동하는 것처럼 보입니다.

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

흥미롭게도 백 슬래시를 사용하여 오류 코드 20497과 함께 자동으로 실패하는 첫 번째 브래킷 이스케이프 처리 합니다 .

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

내 질문은 일반적인 경우 에이 문제를 해결하는 방법입니다. URL을 자동으로 이스케이프 처리하는 인수가 있거나 curl로 전달하기 전에 이스케이프해야하는 문자에 대한 설명이 있습니까?

답변:


481

신경 쓰지 마십시오. 문서에서 찾았습니다.

-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
나를 위해, 그것은 작동하지 않았다. 나는 각 대괄호 앞에 \를 추가해야했다
jesusperaltac

@jesusperaltac macOS와 동일
Jean

나를 위해 그것은 작동했습니다-OS X High Sierr, curl 7.54.0 (x86_64-apple-darwin17.0) libcurl / 7.54.0.
Shade

1
@Jean @jesusperaltac 나를 위해 그것은 명령 경우 Windows에서 작동curl -L -o <local_file_name> -g <url>
Steven Liang

CentOS 7.1에서 근무했습니다. 컬 버전 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
PatS

0

글 로빙 은 괄호를 사용하므로 슬래시로 이스케이프해야합니다 \. 또는 다음 명령 줄 스위치는 글 로빙을 비활성화합니다.

--globoff(또는 짧은 옵션 버전 : -g)

전의:

curl --globoff https://www.google.com?test[]=1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.