You need to join this project to post message / question. See Help for details.
Bash Compare Two Verions¶
1 # Purpose: Compare two version string in x.y.z format
2 # Author: Anh K. Huynh
3 # License: Public domain
4 __version_compare_v1_le_v2() {
5 local _ver1="$1"
6 local _ver2="$2"
7 local _n1="$(echo $_ver1 | sed -e 's/[^.]//g' | wc -m)"
8 local _n2="$(echo $_ver2 | sed -e 's/[^.]//g' | wc -m)"
9 if [ ! $_n1 = $_n2 ]; then
10 echo >&2 ":: ($FUNCNAME) cannot compare two different formats: $_ver1 vs. $_ver2"
11 return 2
12 fi
13 local _i=1
14 local _f1
15 local _f2
16 local _lessthan=0
17 while [ $_i -le $_n1 ]; do
18 _f1="$(echo $_ver1 | cut -d. -f$_i)"
19 _f2="$(echo $_ver2 | cut -d. -f$_i)"
20 if [ $_f1 -lt $_f2 ]; then
21 break
22 elif [ $_f1 -gt $_f2 ]; then
23 _lessthan=1
24 break
25 fi
26 _i="$(expr $_i + 1)"
27 done
28 return $_lessthan
29 }