Unix Curl Значение галочек - PullRequest
       5

Unix Curl Значение галочек

0 голосов
/ 26 сентября 2018

Здравствуйте, у меня есть вопрос о том, как парсер curl работает в командной строке linux:

я работаю в системе jokto-linux, где пишу инструкции командной строки:

Iхочу узнать, в чем разница с галочками '...' и без них.

командная строка с галочками:

curl 'http://localhost:80/uri/?$sortby=name'> data.json

командная строка без галочек:

curl -i http://localhost:80/uri/?$sortby=name> data.json

Команда с галочками возвращает мне http 200OK и отсортированный ответ в формате json,другая команда без галочек приносит мне тоже 200OK, но ответ не отсортирован.Я не знаю причину почему.

Спасибо за отзыв

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Галочка () не имеет специального значения в оболочке.

Строка, заключенная в одинарные кавычки ('), со стоп-символами со специальным значением, имеющим это значение (например, & выиграно)не ставьте скрипт в фоновом режиме, и $ не будет запускать переменную).

Дополнительная информация:

0 голосов
/ 01 октября 2018

Спасибо за правильный ответ.Извините за это, но мой googletranslator перевел меня с немецкого = "Häckchen" на английский = "галочки", а не на кавычки.Но обычно я знаю это слово.

0 голосов
/ 26 сентября 2018

Прежде всего, это так называемые одинарные кавычки , а не галочки.Это галочка: ✓

Bash понимает одинарные кавычки как защиту текста аргумента от интерпретации.Как правило, ничто, заключенное в одинарные кавычки, не будет иметь специального значения и будет интерпретироваться как простой текст.

Без них ? и $ имеют особое значение для bash: ? участвует в«globbing» (расширение имен файлов для соответствия шаблонам, где ? является заполнителем для одного символа), а $ участвует в расширении переменной ($sortby будет заменено значением переменной sortby).

? может не совпадать ни с чем и поэтому останется один, но $sortby, поскольку переменная, вероятно, не определена, будет заменена пустой строкой.Конечный результат заключается в том, что до того, как curl увидит аргумент, он будет преобразован, если не заключен в кавычки, и, скорее всего, станет http://localhost:80/uri/?=name - не то, что вам нужно.

Есть еще несколько символов, которые могут испортить вашу командную строкудаже больше, если они присутствовали;например, !, &, скобки и многое другое.Рекомендуется всегда указывать свой URI.

...