Bash-检测当前操作系统版本,并将其与算术表达式进行比较
我需要我的代码根据安装的操作系统版本做一些不同的事情。如果检测到的操作系统版本大于或等于10.14.6,请执行某些操作,否则,请执行其他操作。我正在使用类似于此的代码,但似乎逻辑不起作用Bash-检测当前操作系统版本,并将其与算术表达式进行比较,bash,shell,Bash,Shell,我需要我的代码根据安装的操作系统版本做一些不同的事情。如果检测到的操作系统版本大于或等于10.14.6,请执行某些操作,否则,请执行其他操作。我正在使用类似于此的代码,但似乎逻辑不起作用 编辑:如果我使用或可以这样做: OS_VERS=$(sw_vers -productVersion) if [[ ${OS_VERS} >= 10.14.6 ]]; then echo "Bla bla bla..." fi 首先,10.14.6不是真正的数字,所以不
编辑:如果我使用
或可以这样做:
OS_VERS=$(sw_vers -productVersion)
if [[ ${OS_VERS} >= 10.14.6 ]]; then
echo "Bla bla bla..."
fi
首先,10.14.6
不是真正的数字,所以不能使用=
进行比较。您可以将其拆分为多个组件,并分别检查每个组件。使用选项GNUsort
——version sort
可能会有所帮助。您确实不想这样做。不要测试平台,测试功能。如果操作系统的某个特定功能与版本>=10.14.6相关,则测试该功能。你不在乎操作系统的版本是一个特定的数字,你关心的是一个特定的功能存在。
function ver { printf "%03d%03d%03d" $(echo "$1" | tr '.' ' '); }
[ $(ver 10.14.7) -ge $(ver 10.14.6) ] && echo foo || echo bar