Update README.md
[cmdllinux.git] / bash_n_examples / bash / version / version_test.sh
blobb9d08d9c9479b702ff16b02f676c4cfec812e89b
1 #grub-version checking
2 version_test_numeric()
4 local retval ta tb
5 #extract version number
6 local a="$(echo $1 | cut -d - -f 2- | sed 's/-.*//')."
7 local b="$(echo $2 | cut -d - -f 2- | sed 's/-.*//')."
8 if [ "$a" = "$b" ] ; then
9 return 0
11 numpass=1
12 while true; do
13 [ -z "$(echo $a | cut -d . -f $numpass)" ] && ta="$a 0" || ta="$a $(echo $a | cut -d . -f $numpass)"
14 [ -z "$(echo $b | cut -d . -f $numpass)" ] && tb="$b 0" || tb="$b $(echo $b | cut -d . -f $numpass)"
15 [ "$(echo $ta | cut -d " " -f 2)" = "$(echo $tb | cut -d " " -f 2)" ] || break
16 numpass=$(expr $numpass + 1)
17 done
18 if (echo $ta ; echo $tb) | sort -n -k 2 | cut -d " " -f 1 | head -n 1 | grep -qx $b ; then
19 return 0
20 else
21 return 1
24 version_test_alphabetic()
26 #extract kernel version
27 local a=`echo $1 | cut -d - -f 2-`
28 local b=`echo $2 | cut -d - -f 2-`
29 if [ "$a" = "$b" ] ; then
30 return 0
32 if (echo $a ; echo $b) | sort | head -n 1 | grep -qx $b ; then
33 return 0
34 else
35 return 1
38 version_find_latest()
40 local n=$#
41 local a=$(eval 'echo $'$n)
42 for i in $@ ; do
43 if version_test_numeric "$i" "$a" ; then
44 a="$i"
46 done
47 echo "$a"
50 version_find_latest pkg-2.6.34.9-lt pkg-2.5.34.9-lt pkg-2.8.12.9-lt pkg-1.6.34.9 pkg-3.0 pkg-3.0f pkg-3.0e