在 Bash 脚本中评估操作系统

在 Bash 脚本中评估操作系统

我在考虑在运行我的脚本之前,先评估用户使用的操作系统是 ubuntu 还是 solaris,我使用这个是因为
每个操作系统的命令选项存在一些差异,例如sed ..,我尝试了以下操作:

sysEval=`grep "ubuntu" | uname -a`

if [ sysEval ]; then

.......some command 

else ....... some command
fi

注意:我的脚本只能在 ubuntu 或 solaris 中运行
好像不起作用!

答案1

我可能会做这样的事:

os=$(uname -s)
case $os in
  Linux) 
    distro=$(lsb_release -si)
    case $distro in
      Ubuntu) 
        echo "Ubuntu, great!"
        ;;
      *) 
        echo "Sorry, Linux distribution '$distro' is not supported"
        exit 1
        ;;
    esac
    ;;
  SunOS) 
    echo "SunOS, great!"
    ;;
  *) 
    echo "Sorry, OS '$os' is not supported"
    exit 1
    ;;
esac

答案2

一个更好的想法不是解析,而是uname -a解析的输出cat /etc/*release*

答案3

有一个环境变量:

echo $OSTYPE

答案4

 sysEval=cat /etc/*release* | awk 'FNR == 1 {print $1 }' | cut -d\= -f2

相关内容