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.