我知道如何从GUI查找Mac OS X版本:Apple Menu (top left) > About This Mac

是否有一个终端命令会告诉我Mac OS X版本?

#1 楼

您有几种选择:

sw_vers -productVersion 

system_profiler SPSoftwareDataType


任何一种都可以满足您的需求,并且可以解析输出格式(如果您要这样做的话)。

评论


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

–肯特
13年5月27日在22:52

好一个!我要去寻找lsb_release或类似的东西。永远不会发现那些脚本。 :D

–阿拉斯泰尔
2014年2月8日下午0:43

#2 楼

命令sw_vers显示版本。对于较旧的Mac OS,您可以在Wikipedia中找到有用的信息。

#3 楼

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

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


我在几个脚本中使用了该脚本,如果在10.8.x,10.9.x和现在的10.10上运行。

评论


更简单:sw_vers -productVersion |切-d'。 -f 1,2

–waldyrious
16-11-18在12:56

#4 楼

如果您希望基于语义版本控制来划分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