Skip to content

Instantly share code, notes, and snippets.

@soliton-
Last active April 19, 2021 18:22
Show Gist options
  • Save soliton-/f1f2d08cee3718d9da88107aac4cf171 to your computer and use it in GitHub Desktop.
Save soliton-/f1f2d08cee3718d9da88107aac4cf171 to your computer and use it in GitHub Desktop.
version compare for bash
#!/bin/bash
# compare version $1 and $2; returns 0 if version $1 >= $2
# versions must be numeric only
vcompare() {
local v1=$1 v2=$2 v1a v2a n1 n2 max i
IFS=. read -ra v1a <<< "$v1"; IFS=. read -ra v2a <<< "$v2"
((n1=${#v1a[@]}, n2=${#v2a[@]}, max=(n1 > n2 ? n1 : n2)))
for ((i=0; i<max; ++i))
do
((v1a[i] == v2a[i])) && continue
((v1a[i] > v2a[i]))
return
done
}
@kurahaupo
Copy link

vcompare() {
  local v1=$1 v2=$2 v1a v2a n1 n2 max i
  IFS=. read -ra v1a <<< "$v1"
  IFS=. read -ra v2a <<< "$v2"
  for ((n1=${#v1a[@]},
        n2=${#v2a[@]},
        max=(n1 > n2 ? n1 : n2),
        i=0
      ; i<max && v1a[i] == v2a[i]
      ; ++i)) do : ; done
  ((v1a[i] >= v2a[i]))
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment