Você pode fazer isso quase exatamente como você o escreveu. Quando você estiver usando [[
, então ==
usa correspondência de padrões no lado direito. Em um padrão de Bash, você pode combinar um de uma seleção de padrões usando @(a|b|c)
:
if [[ "${hostname}" = @(foo|bar)servername@(01|02|03) ]]; then
Isso corresponde a cada um dos casos que você identifica. @( ... | ... )
corresponde a qualquer um dos padrões separados por |
. Você também pode usar outros globs *
e ?
, [character classes]
e outros padrões compostos para padrões repetidos, opcionais ou negados.
O uso desses padrões estendidos precisa da opção extglob
shell ativada. Se ainda não estiver (você receberá um erro de sintaxe), poderá ativá-lo com:
shopt -s extglob
em qualquer lugar antes que seu if
apareça.
Se você preferir e estiver mais familiarizado com eles, também poderá usar horários regulares estendidos expressões usando o operador =~
no lugar de ==
.