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 == .