Quais REs posso usar com o operador = ~

4

A página man de bash tem a dizer sobre o =~ operator:

An additional binary operator, =~, is available, with the same precedence as == and !=. When it is used, the string to the right of the operator is considered an extended regular expression and matched accordingly (as in regex(3))

No entanto, estou descobrindo que REs até triviais parecem não funcionar. Aqui está o meu exemplo de caso de uso:

n='hello'
[[ "$n" =~ 'llo' ]] && echo yes || echo no   # <-- yes
[[ "$n" =~ 'llo$' ]] && echo yes || echo no  # <-- no

Dado que $ é um indicador padrão de RE para EOL, por que a segunda comparação retorna "não"?

    
por roaima 15.10.2015 / 13:42

1 resposta

4

Você não leu atentamente a página de manual, mas também disse:

Any part of the pattern may be quoted to force the quoted portion to be matched as a string.

Assim, o $ na sua string significa o sinal de dólar literal em vez do final da string. Movendo o $ da string para que funcione:

$ [[ "$n" =~ 'llo'$ ]] && echo yes || echo no
yes
    
por 15.10.2015 / 13:49