如何在bash脚本中使用正则expression式?

我想用一个正则expression式来检查variables是否有效。 阅读bash手册我明白我可以使用operator =〜

看下面的例子,我希望看到“不好”,但我看到“确定”。 我究竟做错了什么?

i="test" if [ $i=~"200[78]" ] then echo "OK" else echo "not OK" fi 

它在3.1和3.2之间被改变了:

这是自bash-3.1发布以来添加到bash-3.2中的新特性的简要描述。

现在引用[[command's =〜运算符]的string参数强制string匹配,与其他模式匹配运算符一样。

因此,请使用它没有引号:

 i="test" if [[ $i =~ 200[78] ]] ; then echo "OK" else echo "not OK" fi 

你需要运算符周围的空格=〜

 I = “testing”
如果[[$ i =〜“200 [78]”]];
然后
  回声“确定”
其他
  回声“不好”
科幻