No caso do operador =~
, apenas não use aspas para o operador certo. Isso é considerado uma expressão regular estendida, portanto, neste caso, aspas simples farão parte da expressão regular. Então, usando aspas simples, uma string como '<img src="/thumbs/os_x_lynx-t1.jpg"'
(que contém também aspas simples ao redor) será encontrada. Veja Significado do operador “= ~” no script de shell .
Além disso, você deve escapar de qualquer caractere especial em sua regex (citações, espaços, redirecionamento de shell - <
):
#!/bin/bash
page=$(<testregex.txt)
if [[ $page =~ \<img\ src=\"[^\"]*\.jpg\" ]]; then
echo
echo "match found"
else
echo "match not found!"
fi
Além de =~
, você pode usar em seu script o comando original que usa grep
:
#!/bin/bash
if grep -qE '<img src="[^"]*\.jpg"' testregex.txt ; then
echo
echo "match found"
else
echo "match not found!"
fi
Nesse caso, usei a opção -q
para grep
para não gravar nada na saída padrão e sair imediatamente se alguma correspondência for encontrada.