Melewati URL dengan tanda kurung ke ikal

305

Jika saya mencoba meneruskan URL ke ikal yang berisi tanda kurung, gagal dengan kesalahan:

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

Namun, jika saya lolos dari kedua tanda kurung, tampaknya berfungsi:

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

Menariknya, saya menggunakan garis miring terbalik untuk menghindari hanya braket pertama yang gagal diam-diam dengan kode kesalahan 20497:

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

Pertanyaan saya adalah bagaimana cara memperbaikinya untuk kasus umum? Apakah ada argumen yang akan keluar dari URL secara otomatis, atau deskripsi karakter yang perlu diloloskan sebelum melewati untuk menggulung?

chaimp
sumber

Jawaban:

482

Sudahlah, saya menemukannya di dokumen:

-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
sumber
10
Bagi saya, itu tidak berhasil. Saya harus menambahkan \ sebelum setiap tanda kurung siku
jesusperaltac
@jesusperaltac Sama bagi saya, dengan macOS
Jean
Bagi saya ini berhasil - pada OS X High Sierr, curl 7.54.0 (x86_64-apple-darwin17.0) libcurl / 7.54.0.
Shade
1
@Jean @jesusperaltac bagi saya itu bekerja di windows jika perintahnya adalahcurl -L -o <local_file_name> -g <url>
Steven Liang
Bekerja untuk saya CentOS 7.1. Curl versi 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
PatS
0

Globbing menggunakan tanda kurung, maka kebutuhan untuk melarikan diri mereka dengan garis miring \. Atau, saklar baris perintah berikut akan menonaktifkan globbing:

--globoff (atau versi opsi singkat: -g )

Ex:

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