Як дізнатися версію Mac OS X від Terminal?


Відповіді:


211

У вас є кілька варіантів:

sw_vers -productVersion 

system_profiler SPSoftwareDataType

Або виконуватимете те, що вам потрібно, і матиме вихідний формат, який можна проаналізувати (якщо це ви хочете).


3
Перший дає лише версію ОС (тобто "10.7.5"). Другий дає вам багато додаткової інформації, наприклад 32/64-розрядної.
Кент

1
Хороший! Мене збиралися шукати lsb_releaseчи щось подібне. Ніколи б не помітив цих сценаріїв. : D
Аластер


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.