Kıvrılmak üzere köşeli parantez içeren bir URL geçirme


305

Köşeli ayraçlar içeren kıvırmak için bir URL iletmeye çalışırsam, bir hata ile başarısız olur:

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

Ancak, her iki köşeli ayraçtan kaçarsam, işe yarıyor gibi görünüyor:

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

İlginç bir şekilde, hata kodu 20497 ile sessizce başarısız olan ilk braketten kaçmak için bir ters eğik çizgi kullanıyorum:

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

Benim sorum genel durumlar için bu nasıl düzeltilir? URL'lerden otomatik olarak çıkacak bir argüman veya kıvrılmadan önce kaçması gereken karakterlerin açıklaması var mı?

Yanıtlar:


482

Boş ver, dokümanlarda buldum:

-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
Benim için işe yaramadı. Her köşeli parantezden önce bir \ eklemek zorunda kaldım
jesusperaltac

@jesusperaltac Benim için aynı, macOS ile
Jean

Benim için çalıştı - OS X High Sierr, curl 7.54.0 (x86_64-apple-darwin17.0) libcurl / 7.54.0.
Gölge

1
@Jean @jesusperaltac benim için komut buysa pencerelerde çalışırcurl -L -o <local_file_name> -g <url>
Steven Liang

Benim için çalıştı CentOS 7.1. Curl sürüm 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
PatS

0

Globbing parantez kullanır, bu nedenle eğik çizgi ile onlardan kaçma ihtiyacı \. Alternatif olarak, aşağıdaki komut satırı anahtarı globbing'i devre dışı bırakır:

--globoff(veya kısa opsiyon sürümü: -g)

Ör:

curl --globoff https://www.google.com?test[]=1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.