那么为什么以下工作,即打印出比赛:
THE_REGEX='^test\/version[0-9]+([.][0-9]+)+$'
if [[ "$SOME_VAR" =~ $THE_REGEX ]]; then
echo "Match!"
fi
但以下不是:
if [[ "$SOME_VAR" =~ '^test\/version[0-9]+([.][0-9]+)+$' ]]; then
echo "Match!"
fi
有什么区别?这是同一个正则表达式
那么为什么以下工作,即打印出比赛:
THE_REGEX='^test\/version[0-9]+([.][0-9]+)+$'
if [[ "$SOME_VAR" =~ $THE_REGEX ]]; then
echo "Match!"
fi
但以下不是:
if [[ "$SOME_VAR" =~ '^test\/version[0-9]+([.][0-9]+)+$' ]]; then
echo "Match!"
fi
有什么区别?这是同一个正则表达式
不要在里面使用单引号
[[
:来自 GNU bash 手册: https ://www.gnu.org/software/bash/manual/html_node/Conditional-Constructs.html#Conditional-Constructs
特别注意:
该手册似乎建议首选使用该变量:
另请参阅如何将正则表达式存储在 shell 变量中避免引用 shell 特殊字符的问题?