我想制作一个bash脚本,将系统操作系统和版本作为一个简单的字符串。
获取这些信息的可能方法来自
可能还有其他一些我不知道的人。问题是我希望bash脚本能够在Ubuntu 12,13,14和CentOS上运行。上述一些在这些系统中不起作用。例如,lsb_release在CentOS上不起作用,有时/ etc /问题是空的,所以我对此感到困惑。
至于字符串我想以这种方式得到它(并将其保存到var)。我会举例说明。
如果操作系统是Ubuntu 12.x 我想将其视为 ubuntu12
如果操作系统是Ubuntu 13.x 我想将其视为 ubuntu13
如果操作系统是CentOS 7.x 我想将其视为 centos7
这很容易吗?
谢谢你
答案 0 :(得分:1)
这是一个bash解决方案。我在Ubuntu上测试过,但没有在CentOS上测试过(我现在只有RHEL可用)。但您可以测试CentOS部件并根据需要进行修改。
#!/usr/bin/env bash
RELEASE=unknown
version=$( lsb_release -r | grep -oP "[0-9]+" | head -1 )
if lsb_release -d | grep -q "CentOS"; then
RELEASE=centos$version
elif lsb_release -d | grep -q "Ubuntu"; then
RELEASE=ubuntu$version
fi
echo $RELEASE
或者,在CentOS上没有lsb_release
:
#!/usr/bin/env bash
RELEASE=unknown
if [ -f /etc/redhat-release ]; then
version=$( cat /etc/redhat-release | grep -oP "[0-9]+" | head -1 )
RELEASE=centos$version
elif [ -n $(which lsb_release 2> /dev/null) ] && lsb_release -d | grep -q "Ubuntu"; then
version=$( lsb_release -d | grep -oP "[0-9]+" | head -1 )
RELEASE=ubuntu$version
fi
echo $RELEASE
在任何情况下,都有不止一种方法可以给这只猫上皮。