我想使用正则表达式检查变量是否具有有效年份。阅读bash manual我明白我可以使用operator =〜
看看下面的例子,我希望看到“不行”,但我看到“OK”。我做错了什么?
i="test"
if [ $i=~"200[78]" ]
then
echo "OK"
else
echo "not OK"
fi
答案 0 :(得分:115)
在3.1和3.2之间进行了更改:
这是对自bash-3.1发布以来添加到bash-3.2的新功能的简要描述。
引用[[command's =〜运算符]的字符串参数现在强制字符串匹配,就像其他模式匹配运算符一样。
因此在没有引号的情况下使用它:
i="test"
if [[ $i =~ 200[78] ]] ; then
echo "OK"
else
echo "not OK"
fi
答案 1 :(得分:8)
你需要在operator =〜
周围留出空格i="test" if [[ $i =~ "200[78]" ]]; then echo "OK" else echo "not OK" fi