Прежде всего, это так называемые одинарные кавычки , а не галочки.Это галочка: ✓
Bash понимает одинарные кавычки как защиту текста аргумента от интерпретации.Как правило, ничто, заключенное в одинарные кавычки, не будет иметь специального значения и будет интерпретироваться как простой текст.
Без них ?
и $
имеют особое значение для bash: ?
участвует в«globbing» (расширение имен файлов для соответствия шаблонам, где ?
является заполнителем для одного символа), а $
участвует в расширении переменной ($sortby
будет заменено значением переменной sortby
).
?
может не совпадать ни с чем и поэтому останется один, но $sortby
, поскольку переменная, вероятно, не определена, будет заменена пустой строкой.Конечный результат заключается в том, что до того, как curl
увидит аргумент, он будет преобразован, если не заключен в кавычки, и, скорее всего, станет http://localhost:80/uri/?=name
- не то, что вам нужно.
Есть еще несколько символов, которые могут испортить вашу командную строкудаже больше, если они присутствовали;например, !
, &
, скобки и многое другое.Рекомендуется всегда указывать свой URI.