Zsh: завершение хеш-каталога

Вы можете сделать это почти так же, как вы это написали. Когда вы используете [[, тогда == использует сопоставление с образцом с правой стороны. В шаблоне Bash вы можете сопоставить один из нескольких шаблонов, используя @ (a | b | c) :

if [[ "${hostname}" = @(foo|bar)servername@(01|02|03) ]]; then

, который соответствует каждому из выявленных вами случаев. @ (... | ...) соответствует любому из разделенных | шаблонов внутри него. Вы также можете использовать другие глобусы * и ? , [классы символов] и другие составные шаблоны для повторяющихся, необязательных или отрицательных узоры.

Для использования этих расширенных шаблонов необходимо включить параметр оболочки extglob . Если он еще не включен (вы получите синтаксическую ошибку), вы можете включить его с помощью:

shopt -s extglob

в любом месте перед вашим , если появляется .


Если вы предпочитаете и более знакомы с ними, вы также можете использовать произвольные расширенные регулярные выражения , используя оператор = ~ вместо == .

5
19.05.2016, 11:36
0 ответов

Теги

Похожие вопросы