如何匹配`uname -r`中的“4.4”?

如何匹配`uname -r`中的“4.4”?

伪代码

[ `uname -r` =~ ^4\.4.*$ ] && echo "yes"  

然而,这在所有情况下都是不成功的。该uname -r命令给出类似4.6.0-040600-generic的输出。

答案1

Bash 运算符[可能不是您正在寻找的;不过,[[确实支持=~。尝试这个:

[[ $(uname -r) =~ ^4\.4 ]] && echo yes

答案2

根据您的用例(例如测试多个值),您可能会发现“case”语法更适合。

case $(uname -r) in
   4.4*) echo 4.4 based kernel found ;;
  3.10*) echo 3.10 based kernel found ;;
      *) echo unknown kernel found
esac

答案3

使用[[

ver=$(cut -d. -f1-2 <(uname -r))
[[ $ver =~ 3.2 ]] && echo "y"

或使用[

ver=$(cut -d. -f1-2 <(uname -r))
[ $ver == 3.2 ] && echo "y"

答案4

其他方式:

case $(uname -r) in (4.4.*) echo yes;; esac

相关内容