linux +打印linux版本(单个字符为5或6 ..等)

我创build了以下行,以便validationLinux版本(如红帽5.X或4.X等)

我觉得我的路线太长,不太优雅

awk -F"release" '{print $2}' /etc/redhat-release | awk '{print $1}' | sed s'/\./ /g' | awk '{print $1}' 5 

testing:

 $ LINUX_VERSION=` awk -F"release" '{print $2}' /etc/redhat-release | awk '{print $1}' | sed s'/\./ /g' | awk '{print $1}' ` $ echo $LINUX_VERSION 5 

也许有人可以给出更优雅的方式来打印Linux版本?

 $ more /etc/redhat-release Red Hat Enterprise Linux Server release 5.4 (Tikanga) 

不要解析文件。 让RedHat系统版本的做法告诉你你想要什么。 请参阅man yum.conf有关releasever的文档。

运行rpm -qf --qf '%{version}\n' /etc/redhat-release

如果你真的只需要这个号码(即使在正式版本是5server5Client ),那么你需要用下面的东西来解决这个问题:

 v=$(rpm -qf --qf '%{version}\n' /etc/redhat-release) echo "${v%%[a-zA-Z]*}" # or echo "$v" | grep -o '^[0-9]*' # or echo "$v" | tr -d 'a-zA-Z' 

或者其他你喜欢的东西。

这是lsb_release命令的用途。

 $ lsb_release -sr 5.8 

或者,通过一些后处理来获取主要版本:

 $ lsb_release -sr | perl -lnE '/(\d+)/ and say $1' 5 
  awk -v RS='[. ]' '/[0-9]+/{print;exit}' 

说明

  • 将记录分隔符更改为空格或. 。 空白部分容易理解所有的单词; 和. 分开2个记录中的版本

  • Print记录并在记录是数字时exit

假设

  • 该版本是在输入中找到的第一个数字