Проверьте версию ОС, затем введите команду, если верная версия - PullRequest
5 голосов
/ 28 марта 2012

Я пишу сценарий bash для Mac OS X Lion 10.7, и я хотел бы знать, как я могу проверить версию ОС в bash, и если версия, скажем, 10.7.1, тогда она выполняет команду и продолжает ссценарий и сделать то же самое для другой версии, скажем, 10.7.3, тогда он выполняет другую команду, чем команда, которая использовалась для 10.7.1?

Ответы [ 3 ]

6 голосов
/ 06 апреля 2012

OS_Version (полный… пример 10.7.3)

system_profiler SPSoftwareDataType | grep "System Version" | awk '{print $6}'

ИЛИ

sw_vers -productVersion

ОС (короткий… пример 10.7)

system_profiler SPSoftwareDataType | grep "System Version" | awk '{print $6}' | sed "s:.[[:digit:]]*.$::g"

ИЛИ

OS_Version=$(OS (short… example 10.7) | sed "s:.[[:digit:]]*)

Баш:

#!/bin/bash

# Use one of the examples given above to create the OS_Version variable

if [[ ${OS_Version} == 10.7.3 ]]; then
   echo "Operating System is a match... will continue on."
else
   echo "Operating System is NOT a match... will NOT continue."
fi
5 голосов
/ 28 марта 2012

Требуется команда sw_vers в OS X. Она печатает некоторые читаемые человеком строки, включая системную версию 10.X.X (sw_vers -productVersion). Вы также можете использовать uname для проверки версии ядра; если ваш скрипт когда-либо портирован на другие варианты Unix, uname будет работать там.

2 голосов
/ 14 сентября 2016

Если вам нужно только проверить основную версию ОС, имейте в виду, что версия Darwin соответствует ей, а в bash установлена ​​переменная оболочки, которую легко привести к числово сопоставимому целому числу.

if [[ ${OSTYPE:6} -ge 13 ]]; then
    echo "At least 10.9, so feeling fine.";
else 
    echo "Time to put the old cat to sleep.";
fi
...