为什么下面的 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

我不记得哪个版本改变了这一点。

10-08 13:04