Não corresponde nem regex

1

Eu tenho um script Bash que instala um JBoss personalizado. O nome da instância do JBoss é verificado em relação a uma expressão regular para garantir que o nome seja válido:

if [[ ! $1 =~ $instanceNameRegex ]]; then
    exit 1
fi

Agora temos um requisito para uma segunda regex válida. ou seja, o nome deve corresponder a $instanceNameRegex ou $secondInstanceNameRegex .

Como faço isso no teste if ? Estou procurando por isso, mas não consigo trabalhar:

if [[ [ ! $1 =~ $instanceNameRegex ] -a [ ! $1 =~ $secondInstanceNameRegex ] ]]; then

, ou seja, se o parâmetro não corresponder ao primeiro regex E não corresponder ao segundo e, em seguida, sair.

    
por Rich 02.02.2012 / 10:56

2 respostas

4

Você pode fazer

if [[ ! $1 =~ $instanceNameRegex && ! $1 =~ $secondInstanceNameRegex ]]; then

Eu usaria em vez disso:

if [[ ! ( $1 =~ $instanceNameRegex || $1 =~ $secondInstanceNameRegex ) ]]; then
    
por 02.02.2012 / 11:10
0

Isso pode funcionar para você:

if [[ ! $1 =~ "${instanceNameRegex}|${secondInstanceNameRegex}" ]]; then
    
por 02.02.2012 / 19:52