bash中的正则表达式不能在带有运算符'=〜'的Bash中的条件构造中使用

时间:2019-08-08 21:59:09

标签: bash sh

我放入条件构造(使用=〜运算符)的正则表达式不会返回我期望的值,但是当我将它们分配给两个变量时,它就可以工作了。想知道我做错了什么。

版本1(该版本有效)

a=30
b='^[0-9]+$' #pattern looking for a number
[[ $a =~ $b ]]
echo $?

#result is 0, as expected

版本2(该版本无效,但我认为完全相同)

[[ 30 =~ '^[0-9]+$' ]]
echo $?

#result is 1

1 个答案:

答案 0 :(得分:4)

不引用正则表达式:

[[ 30 =~ ^[0-9]+$ ]]
echo $?

来自manual

  

可以对模式的任何部分加引号,以强制将引号部分匹配为字符串。

因此,如果您引用整个模式,则将其视为固定字符串匹配而不是正则表达式。