正则表达式和引用的字符串

时间:2013-02-23 21:20:53

标签: regex bash

这是一个名为“target”的变量

$ echo $_target
x86_64-linux-gnu

此正则表达式测试成功...

$ if [[ $_target =~ "x86_64" ]]; then echo "match"; fi
match

但它没有测试表达式是否在行的开头。让我将锚标记添加到正则表达式:

$ if [[ $_target =~ "^x86_64" ]]; then echo "match"; fi
$

上面的行不表示匹配。怪异。

但是,如果我取消正则表达式周围的引号,一切都很好

$ if [[ $_target =~ ^x86_64 ]]; then echo "match"; fi
match

为什么引号会影响正则表达式测试?在我的理解中,我错过了上述第二次测试无法匹配的惊讶之处?

1 个答案:

答案 0 :(得分:1)

您不应该将=〜运算符的右侧放在引号中,因为这将表示字符串,而不是正则表达式。 (source