#bash #shell
#bash #оболочка
Вопрос:
OS_VERS=$(sw_vers -productVersion)
if [[ ${OS_VERS} >= 10.14.6 ]]; then
echo "Bla bla bla..."
fi
Мне нужно, чтобы мой код делал что-то другое в зависимости от установленной версии ОС. Если обнаруженная версия ОС больше или равна 10.14.6, сделайте что-нибудь, в противном случае сделайте что-нибудь еще. Я использую что-то вроде этого кода, но, похоже, логика не работает.
РЕДАКТИРОВАТЬ: Это работает, если я использую >
or <
, но не с >=
or <=
Комментарии:
1. Ну, для начала,
10.14.6
на самом деле не является числовым, поэтому вы не можете сравнить его с помощью>=
. Вы могли бы разделить его на компоненты и проверить каждый из них по отдельности.2. Может помочь GNU
sort
с опцией--version-sort
.3. Ты действительно не хочешь этого делать. Не тестируйте платформу, протестируйте функцию. Если в ОС есть какая-то конкретная функция, которая актуальна в версии > = 10.14.6, то протестируйте эту функцию. Вас не волнует, что версия ОС имеет определенный номер, вас волнует, что существует определенная функция.
Ответ №1:
Вы можете сделать это следующим образом:
function ver { printf "ddd" $(echo "$1" | tr '.' ' '); }
[ $(ver 10.14.7) -ge $(ver 10.14.6) ] amp;amp; echo foo || echo bar