如何从Terminal找出Mac OS X版本?


Answers:


211

您有几种选择:

sw_vers -productVersion 

system_profiler SPSoftwareDataType

两种都将做您需要的,并且将具有可解析的输出格式(如果您要这样做的话)。


3
第一个仅提供您的OS版本(即“ 10.7.5”)。第二个为您提供了许多其他信息,例如32/64位。
肯特,

1
好东西!我一直在寻找lsb_release或遵循这些方针。永远不会发现那些脚本。:D
Alastair 2014年


4

如果您只关心主要版本(10.10、10.9),则可以

MAJOR_MAC_VERSION=$(sw_vers -productVersion | awk -F '.' '{print $1 "." $2}')

我在几个脚本中使用了此脚本,如果在10.8.x,10.9.x和现在的10.10上运行,它们必须做不同的事情。


3
更简单:sw_vers -productVersion | cut -d '.' -f 1,2
waldyrious

2

如果您希望基于语义版本化来划分macOS版本号以实现脚本逻辑,这是我使用的一小段代码

product_version=$(sw_vers -productVersion)
os_vers=( ${product_version//./ } )
os_vers_major="${os_vers[0]}"
os_vers_minor="${os_vers[1]}"
os_vers_patch="${os_vers[2]}"
os_vers_build=$(sw_vers -buildVersion)

# Sample semver output
echo "${os_vers_major}.${os_vers_minor}.${os_vers_patch}+${os_vers_build}"
# 10.12.6+16G29

您可以在脚本逻辑中使用这些变量,以根据macOS的版本运行不同的命令。这使补丁或构建版本的控制更为精细。

# Sample bash code
if [[ ${os_vers_minor} -ge 11 ]]; then
    DMG_FORMAT=ULFO
elif [[ ${os_vers_minor} -ge 4 ]]; then
    DMG_FORMAT=UDBZ
else
    DMG_FORMAT=UDZO
fi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.