版本格式 – X.X.X.X.
其中X – 数字.
比较两个版本的最佳方法是什么?
我使用以下代码:
其中X – 数字.
比较两个版本的最佳方法是什么?
我使用以下代码:
compareVersions() { VER_1=$1 VER_2=$2 print -R "$VER_1"| IFS=. read v1_1 v1_2 v1_3 v1_4 print -R "$VER_2"| IFS=. read v2_1 v2_2 v2_3 v2_4 RESULT="0" if [[ "${v1_1}" -lt "${v2_1}" ]] then RESULT="-1" elif [[ "${v1_1}" -gt "${v2_1}" ]] then RESULT="1" elif [[ "${v1_2}" -lt "${v2_2}" ]] then RESULT="-1" elif [[ "${v1_2}" -gt "${v2_2}" ]] then RESULT="1" elif [[ "${v1_3}" -lt "${v2_3}" ]] then RESULT="-1" elif [[ "${v1_3}" -gt "${v2_3}" ]] then RESULT="1" elif [[ "${v1_4}" -lt "${v2_4}" ]] then RESULT="-1" elif [[ "${v1_4}" -gt "${v2_4}" ]] then RESULT="1" fi echo "$RESULT" }
但我不喜欢它 – 它非常简单.
也许有比较版本的正确方法?
Pure Bash / Ksh:
原文链接:https://www.f2er.com/bash/385325.htmlcompareVersions () { typeset IFS='.' typeset -a v1=( $1 ) typeset -a v2=( $2 ) typeset n diff for (( n=0; n<4; n+=1 )); do diff=$((v1[n]-v2[n])) if [ $diff -ne 0 ] ; then [ $diff -le 0 ] && echo '-1' || echo '1' return fi done echo '0' } # ---------- end of function compareVersions ----------