我在一个环境中工作,我们正在慢慢地将机器从 Red Hat Enterprise Linux 5 过渡到 RHEL 6。
我需要我的一些脚本在 RHEL6 机器上做一些与目前在 RHEL5 机器上做的事情略有不同的事情。
实用的解决方案是在运行时检查并在 RHEL5 上运行一些命令,在 RHEL6 上运行一些命令,在两者上运行一些命令。
一个实际的例子是我们正在使用环境模块并且我.bashrc
包含module load git
一行,但是在 RHEL6 机器上这个命令错误:
RHEL6 system, git should be installed - not loading module
Run Code Online (Sandbox Code Playgroud)
查看模块文件,我发现以下代码:
set redhatrelease [eval exec "cat /etc/redhat-release"]
if { [regexp -nocase {release 6} $redhatrelease] } {
puts stderr "\n\t RHEL6 system, git should be installed - not loading module\n"
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
这似乎符合我的要求,但我希望能缩短一些时间。
那么,在 bash 脚本中告诉 RHEL5 和 RHEL6 的最简单方法是什么?
理想情况下,它应该在不同的主要版本中保持健壮,但要容忍次要版本号的变化。
Mel*_*lan 16
if grep -q -i "release 6" /etc/redhat-release
then
echo "running RHEL 6.x"
fi
Run Code Online (Sandbox Code Playgroud)
这将是我能想到的最简单的方法。
Den*_*ker 12
您也可以使用该lsb_release
命令。如果您已经确定它是 RHEL,则获取主要版本号为:
majversion=$(lsb_release -rs | cut -f1 -d.)
Run Code Online (Sandbox Code Playgroud)