Przekazywanie adresu URL z nawiasami do zwijania się


305

Jeśli spróbuję przekazać adres URL do zwijania się, który zawiera nawiasy, błąd kończy się niepowodzeniem:

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

Jeśli jednak uniknę obu nawiasów, wydaje się, że działa:

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

Co ciekawe, używam ukośnika odwrotnego, aby uciec tylko do pierwszego nawiasu klamrowego po cichu z kodem błędu 20497:

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

Moje pytanie brzmi: jak to naprawić w ogólnych przypadkach? Czy istnieje argument, który automatycznie ucieka z adresów URL, lub opis znaków, które należy uciec przed przejściem do zwijania?

Odpowiedzi:


481

Nieważne, znalazłem to w dokumentacji:

-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
Dla mnie to nie zadziałało. Musiałem dodać \ przed każdym nawiasem kwadratowym
jesusperaltac

@jesusperaltac To samo dla mnie, z macOS
Jean

Dla mnie to zadziałało - na OS X High Sierr, curl 7.54.0 (x86_64-apple-darwin17.0) libcurl / 7.54.0.
Odcień

1
@Jean @jesusperaltac dla mnie to działa w systemie Windows, jeśli polecenie jestcurl -L -o <local_file_name> -g <url>
Steven Liang

Pracował dla mnie CentOS 7.1. Wersja Curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
PatS

0

Globbing używa nawiasów, stąd potrzeba ucieczki przed nimi ukośnikiem \. Alternatywnie następujący przełącznik wiersza polecenia wyłączy globbing:

--globoff(lub wersja short-opcja: -g)

Dawny:

curl --globoff https://www.google.com?test[]=1
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.