如何在 shell 脚本中确定 Mac OS X 版本?

Posted

技术标签:

【中文标题】如何在 shell 脚本中确定 Mac OS X 版本?【英文标题】:How to determine Mac OS X version in shell script? 【发布时间】:2019-08-05 00:49:13 【问题描述】:

如果它在 Capitan 下运行,我需要使用一组参数运行 make,而在 Sierra 中运行其他参数。 换一种说法: 我在命令行中运行:

sw_version 产品名称:Mac OS X 产品版本:10.13.6

如何将 ProductVersion 的值传递给变量并检查它 如果当前操作系统版本

【问题讨论】:

【参考方案1】:

试试sw_vers 命令。在此处查看示例: https://www.cyberciti.biz/faq/mac-osx-find-tell-operating-system-version-from-bash-prompt/

获取产品版本:

sw_vers | grep ProductVersion | cut -d':' -f2

比较解析后的值:

base_ver=10.13
ver=$(sw_vers | grep ProductVersion | cut -d':' -f2 | tr -d ' ')
if [ $(echo -e $base_ver"\n"$ver | sort -V | tail -1) == "$base_ver" ]
then 
   echo "older"
else 
   echo "newer"
fi

【讨论】:

谢谢!如何将值 10.13 读取到脚本中的变量然后进行比较? 谢谢!注意: tere 是标志: sw_vers -productVersion 可能我们不需要 grep 顺便说一句,ver=10.13.6 这就是它比较不正确的原因。如何从版本中仅获得 10.13?或分别 10 和 13 然后比较 你的意思是它比较不正确?如果 ver=10.13.6 那么它比 10.13 更新,这是我的建议将输出的。无论如何,如果您只想以 $ver 获得 10.13,您可以尝试:ver=$(sw_vers | grep ProductVersion | cut -d':' -f2 | tr -d ' ' | rev| cut -d'.' -f2-| rev) sw_vers -productVersion 提供与sw_vers | grep ProductVersion | cut -d':' -f2 相同的输出,只是获得它的方式更简洁

以上是关于如何在 shell 脚本中确定 Mac OS X 版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Mac OS X 的终端中清除以前的输出?

如何使 zsh 在 Mac OS X(在 iTerm 中)上作为登录 shell 运行?

如何在 Mac OS X 中删除文件的“扩展属性”?

Mac OS X:如何在emacs客户端的shell中永久更改提示符(PS1的值)?

如何通过双击在 OS X 中运行 shell 脚本?

markdown 有关如何在Mac OS X上安装Fish shell的说明,包括Oh My Fish!。还包括几个有用的功能。