Передача URL-адреси з дужками для згортання


305

Якщо я спробую передати 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'

Цікаво, що я використовую зворотну косу рису, щоб уникнути лише першої дужки, яка виходить з ладу з кодом помилки:

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

Моє запитання - як це виправити для загальних випадків? Чи є аргумент, який автоматично вилучатиме URL-адреси, або опис символів, які потрібно вийти, перш ніж переходити до згортання?

Відповіді:


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
Жан

Для мене це працювало - на OS X High Sierr, curl 7.54.0 (x86_64-apple-darwin17.0) libcurl / 7.54.0.
Відтінок

1
@Jean @jesusperaltac для мене працює у Windows, якщо командаcurl -L -o <local_file_name> -g <url>
Стівен Лян

Для мене працював CentOS 7.1. Версія Curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
PatS

0

Глобінг використовує дужки, звідси необхідність уникнути їх з косою рискою \. Крім того, наступний комутатор командного рядка відключить глобалізацію:

--globoff(Або варіант короткого варіанту: -g)

Наприклад:

curl --globoff https://www.google.com?test[]=1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.