Então, por que o seguinte funciona, ou seja, imprime a correspondência:
THE_REGEX='^test\/version[0-9]+([.][0-9]+)+$'
if [[ "$SOME_VAR" =~ $THE_REGEX ]]; then
echo "Match!"
fi
Mas o seguinte NÃO:
if [[ "$SOME_VAR" =~ '^test\/version[0-9]+([.][0-9]+)+$' ]]; then
echo "Match!"
fi
Qual é a diferença? É o mesmo regex
Não use aspas simples dentro de
[[
:Do manual bash GNU: https://www.gnu.org/software/bash/manual/html_node/Conditional-Constructs.html#Conditional-Constructs
Observe em particular:
O manual parece sugerir que o uso da variável é o preferido:
Consulte também Como armazenar a expressão regular em uma variável de shell evita problemas com caracteres de aspas que são especiais para o shell?