Что означает [...] в скрипте bash? - PullRequest
3 голосов
/ 31 января 2011

Я читаю это учебное пособие, и я столкнулся с тем, что bash-скрипт использует [...] в качестве символа подстановки.Так что же конкретно [...] стоит в скрипте bash?

Ответы [ 3 ]

6 голосов
/ 31 января 2011

Это синтаксис соответствия символов в стиле регулярных выражений; из Справочного руководства Bash , §3.5.8.1 (сопоставление с образцом) :

[...] Соответствует любому из вложенных символов. Пара символов, разделенных дефисом, обозначает выражение диапазона; любой символ, который сортируется между этими двумя символами включительно, с использованием последовательности сортировки и набора символов текущей локали, сопоставляется. Если первый символ, следующий за ‘[’, является ‘!’ или ‘^’, тогда любой символ не прилагается совпадает. ‘−’ может быть сопоставлено включением его в качестве первого или последнего символа в наборе. ‘]’ может быть сопоставлено включением его в качестве первого символа в наборе. Порядок сортировки символов в выражениях диапазона определяется текущей локалью и значением переменной оболочки LC_COLLATE, если установлено.

Например, в языковом стандарте C по умолчанию ‘[a-dx-z]’ эквивалентно ‘[abcdxyz]’ . Многие локали сортируют символы в порядке словаря, и в этих локалях ‘[a-dx-z]’ обычно не эквивалентно ‘[abcdxyz]’; например, это может быть эквивалентно ‘[aBbCcDdxXyYz]’. Чтобы получить традиционную интерпретацию диапазонов в выражениях в скобках, вы можете принудительно использовать языковой стандарт C, задав для переменной среды LC_COLLATE или LC_ALL значение ‘C’.

В пределах ‘[’ и ‘]’ классы символов могут быть указаны с использованием синтаксиса [:class:], где class является одним из следующих классов, определенных в стандарте posix:

          alnum   alpha   ascii   blank   cntrl   digit   graph   lower
          print   punct   space   upper   word    xdigit

Класс символов соответствует любому символу, принадлежащему этому классу. Класс символов слова соответствует буквам, цифрам и символу ‘_’.

В пределах ‘[’ и ‘]’ класс эквивалентности может быть указан с использованием синтаксиса [=c=], который соответствует всем символам с таким же весом сортировки (как определено в текущей локали), что и символ c.

В пределах ‘[’ и ‘]’ синтаксис [.symbol.] соответствует символу сопоставления символов.

(акцент добавлен к наиболее распространенным шаблонам использования)

5 голосов
/ 31 января 2011

Он используется в учебнике для разговора о регулярных выражениях в дополнение к глобализации ('*' и '?'). Например, [a-z] регулярное выражение будет соответствовать одному символу в нижнем регистре.

1 голос
/ 31 января 2011

На самом деле подстановочный знак, например, [abc].Он соответствует одной из трех букв.

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