Truyền một URL có dấu ngoặc để cuộn tròn


305

Nếu tôi cố gắng chuyển một URL để cuộn tròn có dấu ngoặc, nó sẽ bị lỗi:

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

Tuy nhiên, nếu tôi thoát cả hai dấu ngoặc, nó dường như hoạt động:

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

Thật thú vị, tôi sử dụng dấu gạch chéo ngược để chỉ thoát khung đầu tiên mà nó không thành công với mã lỗi 20497:

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

Câu hỏi của tôi là làm thế nào để khắc phục điều này cho các trường hợp chung? Có một đối số sẽ tự động thoát URL hoặc mô tả các ký tự cần được thoát trước khi chuyển sang cuộn tròn?

Câu trả lời:


482

Không sao, tôi tìm thấy nó trong các tài liệu:

-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
Đối với tôi, nó đã không làm việc. Tôi đã phải thêm \ trước mỗi dấu ngoặc vuông
jesusperaltac 15/03/2017

@jesusperaltac Tương tự với tôi, với macOS
Jean

Đối với tôi nó hoạt động - trên OS X High Sierr, curl 7.54.0 (x86_64-apple-darwin17.0) libcurl / 7.54.0.
Bóng râm

1
@Jean @jesusperaltac đối với tôi nó hoạt động trên windows nếu lệnh làcurl -L -o <local_file_name> -g <url>
Steven Liang

Làm việc cho tôi CentOS 7.1. Phiên bản Curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
PatS

0

Globbing sử dụng dấu ngoặc, do đó cần phải thoát chúng bằng dấu gạch chéo \. Ngoài ra, công tắc dòng lệnh sau sẽ vô hiệu hóa toàn cầu:

--globoff(hoặc phiên bản tùy chọn ngắn -g:)

Ví dụ:

curl --globoff https://www.google.com?test[]=1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.