bash编译器的错误?到底是怎么回事

时间:2016-04-20 18:41:54

标签: regex bash

#!/bin/bash
i="a001"
if ! [[ $i =~ "a[0-9]{3}"  ]]; then
    echo "success"
fi

输入i="a001"使其成功,尽管它匹配a[0-9]{3}模式且不应执行if语句。到底是怎么回事?在我看来这是编译错误。这是自昨天以来我没有解决的更大问题的一部分。

2 个答案:

答案 0 :(得分:4)

要在[object MediaStream]中具有=~运算符的所有bash版本中保持一致的行为,请将正则表达式放在变量中,并使用该运算符右侧的变量unquoted:

[[ ]]

答案 1 :(得分:3)

引用转义正则表达式中的元字符,因此不应包含在此处。

$ i="a001"
$ [[ $i =~ "a[0-9]{3}"  ]] ; echo $?
1
$ [[ $i =~ a[0-9]{3}  ]] ; echo $?
0