File: version_cmp

package info (click to toggle)
percona-toolkit 3.7.1-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 106,720 kB
  • sloc: perl: 257,236; sql: 23,577; sh: 21,388; javascript: 6,322; makefile: 398; python: 62; awk: 38; sed: 1
file content (41 lines) | stat: -rwxr-xr-x 637 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env bash

if [ $# -ne 2 ]; then
   cat << EOS
Use: version_cmp x.y.z m.n.o
 or  version_cmp-metadata x.y.z m.n.o+metadata
Exit status:
0: v1 = v2
1: v1 < v2
2: v1 > v2
EOS
   exit 127
fi

# First argument processing
s1=${1#*[-+]}
f=${1%[-+]*}
c=${f//[^.]/}
f=${f//./}
let "v1 = f * 10 ** ( 2 - ${#c} )"

# Second argument processing
s2=${2#*[-+]}
f=${2%[-+]*}
c=${f//[^.]/}
f=${f//./}
let "v2 = f * 10 ** ( 2 - ${#c} )"

if [ "$v1" -lt "$v2" ]; then
   exit 1
elif [ "$v1" -gt "$v2" ]; then
   exit 2
else
   if [ "$s1" \< "$s2" ]; then
      exit 1
   elif [ "$s1" \> "$s2" ]; then
      exit 2
   else
      exit 0
   fi
fi