Вы можете сделать это почти так же, как вы это написали. Когда вы используете [[
, тогда ==
использует сопоставление с образцом с правой стороны. В шаблоне Bash вы можете сопоставить один из нескольких шаблонов, используя @ (a | b | c)
:
if [[ "${hostname}" = @(foo|bar)servername@(01|02|03) ]]; then
, который соответствует каждому из выявленных вами случаев. @ (... | ...)
соответствует любому из разделенных |
шаблонов внутри него. Вы также можете использовать другие глобусы *
и ?
, [классы символов]
и другие составные шаблоны для повторяющихся, необязательных или отрицательных узоры.
Для использования этих расширенных шаблонов необходимо включить параметр оболочки extglob
. Если он еще не включен (вы получите синтаксическую ошибку), вы можете включить его с помощью:
shopt -s extglob
в любом месте перед вашим , если появляется
.
Если вы предпочитаете и более знакомы с ними, вы также можете использовать произвольные расширенные регулярные выражения , используя оператор = ~
вместо ==
.