为什么下面的 bash 脚本只打印出 variable worked
?
#! /bin/bash
foo=baaz
regex='ba{2}z'
if [[ $foo =~ 'ba{2}z' ]]; then
echo "literal worked"
fi
if [[ $foo =~ $regex ]]; then
echo "variable worked"
fi
bash 文档中是否有说明
=~
运算符仅适用于变量而不适用于文字的内容?此限制是否适用于任何其他运营商? 最佳答案
您不再需要 bash 正则表达式的引号:
#! /bin/bash
foo=baaz
regex='ba{2}z'
if [[ $foo =~ ba{2}z ]]; then
echo "literal worked"
fi
if [[ $foo =~ $regex ]]; then
echo "variable worked"
fi
# Should output literal worked, then variable worked
我不记得哪个版本改变了这一点。