bash + expressão regular + validar nome da máquina [closed]

1

Como combinar os seguintes nomes de host com uma expressão regular bash?

Os nomes de host do meu Linux são: star01, star02, star03, start04.

Meu objetivo é validar a string "start0" com qualquer segundo número

Eu faço o seguinte:

 [[ $hostname =~ star0[:digit:]  ]] && echo ok

mas isso não está funcionando:

hostname=star04
[[ $hostname =~ star0[:digit:]  ]] && echo ok

o que está errado aqui?

    
por yael 02.07.2017 / 11:46

1 resposta

2

A classe de caracteres Posix deve ser especificada como [[:digit:]] :

[[ $hostname =~ star0[[:digit:]] ]] && echo ok

A abordagem simplificada alternativa seria:

[[ $hostname =~ star0[0-9] ]] && echo ok

[:digit:] is a POSIX character class, used inside a bracket expression like [x-z[:digit:]]. The POSIX character class names must be written all lowercase.

    
por 02.07.2017 / 11:52