代码之家  ›  专栏  ›  技术社区  ›  idrosid

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

  •  84
  • idrosid  · 技术社区  · 17 年前

    我想使用正则表达式检查变量是否有有效的年份。阅读 bash manual 我知道我需要接线员=~

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

    i="test"
    if [ $i=~"200[78]" ]
    then
      echo "OK"
    else
      echo "not OK"
    fi
    
    2 回复  |  直到 17 年前
        1
  •  116
  •   Community Mohan Dere    6 年前

    它在3.1和3.2之间变化:

    这是对bash-3.1发布以来bash-3.2中添加的新功能的简要描述。

    引用[[命令的=~运算符的字符串参数现在强制字符串匹配,就像其他模式匹配运算符一样。

    因此,请在不使用引号的情况下使用它:

    i="test"
    if [[ $i =~ 200[78] ]] ; then
        echo "OK"
    else
        echo "not OK"
    fi
    
        2
  •  8
  •   michiel    16 年前

    操作员周围需要空间=~

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