Почему оболочка интерпретирует символы в одинарных кавычках? - PullRequest
1 голос
/ 30 октября 2011

Я использую оболочку bash

$cat test
a --b

$grep '--b' test
grep: option `--b' is ambiguous
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

$grep "--b" test
grep: option `--b' is ambiguous
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

$grep '\-\-b' test
a --b

Классическая книга сценариев оболочки в главе 7 «Ввод и вывод, файлы и оценка команд» в разделе 7.7 Цитирование говорит, что

«Одиночные кавычки заставляют оболочку обрабатывать буквально все, что находится между парой кавычек».

Тогда почему одинарные кавычки не работают выше?

Ответы [ 2 ]

6 голосов
/ 30 октября 2011

Оболочка - это , трактующая их буквально.Но оболочка не несет ответственности за то, как приложение обращается с ними.Приложение должно решить, как оно хочет обработать --b, переданный в качестве аргумента.

2 голосов
/ 30 октября 2011

Большинство утилит gnu игнорируют --options после --, поэтому вы можете вместо этого сделать grep -- --b test. А поскольку вы пометили свой вопрос linux, скорее всего, у вас есть GNU grep.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...