我创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
如果你真的只需要这个号码(即使在正式版本是5server
或5Client
),那么你需要用下面的东西来解决这个问题:
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
假设