Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash-检测当前操作系统版本,并将其与算术表达式进行比较_Bash_Shell - Fatal编程技术网

Bash-检测当前操作系统版本,并将其与算术表达式进行比较

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不是真正的数字,所以不

我需要我的代码根据安装的操作系统版本做一些不同的事情。如果检测到的操作系统版本大于或等于10.14.6,请执行某些操作,否则,请执行其他操作。我正在使用类似于此的代码,但似乎逻辑不起作用


编辑:如果我使用
可以这样做:

OS_VERS=$(sw_vers -productVersion)
  if [[ ${OS_VERS} >= 10.14.6 ]]; then
    echo "Bla bla bla..."
  fi

首先,
10.14.6
不是真正的数字,所以不能使用
=
进行比较。您可以将其拆分为多个组件,并分别检查每个组件。使用选项GNU
sort
——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