#!/bin/bash
i="a001"
if ! [[ $i =~ "a[0-9]{3}" ]]; then
echo "success"
fi
输入i="a001"
使其成功,尽管它匹配a[0-9]{3}
模式且不应执行if
语句。到底是怎么回事?在我看来这是编译错误。这是自昨天以来我没有解决的更大问题的一部分。
答案 0 :(得分:4)
要在[object MediaStream]
中具有=~
运算符的所有bash版本中保持一致的行为,请将正则表达式放在变量中,并使用该运算符右侧的变量unquoted:
[[ ]]
答案 1 :(得分:3)
引用转义正则表达式中的元字符,因此不应包含在此处。
$ i="a001"
$ [[ $i =~ "a[0-9]{3}" ]] ; echo $?
1
$ [[ $i =~ a[0-9]{3} ]] ; echo $?
0