我的情況很簡單:
我正在嘗試比較兩個值:
a=0.2
b=0.1
我試圖執行的代碼是:
if [ "$a" -gt "$b" ]; then
echo "You are running an outdated version"
fi
uj5u.com熱心網友回復:
假設您要比較版本號,請嘗試以下操作:
#!/bin/bash -posix
# compares version numbers
# prints 0 if $a == $b
# positive number if $a is newer than $b
# negative number if $a is older than $b
vercmp() {
local a=$1
local b=$2
local a1=${a%%.*} # major number of $a
local b1=${b%%.*} # major number of $b
if [[ $a = "" ]]; then
if [[ $b = "" ]]; then
echo 0 # both $a and $b are empty
else
vercmp "0" "$b"
fi
elif [[ $b = "" ]]; then
vercmp "$a" "0"
elif (( 10#$a1 == 10#$b1 )); then
local a2=${a#*.} # numbers after the 1st dot
if [[ $a2 = $a ]]; then
a2="" # no more version numbers
fi
local b2=${b#*.} # numbers after the 1st dot
if [[ $b2 = $b ]]; then
b2="" # no more version numbers
fi
vercmp "$a2" "$b2"
else
echo $(( 10#$a1 - 10#$b1 ))
fi
}
例子:
vercmp 0.2 0.1
=> 1 (positive number: the former is newer)
vercmp 1.0.2 1.0.10
=> -8 (negative number: the latter is newer)
a=0.2
b=0.1
if (( $(vercmp "$a" "$b") > 0 )); then
echo "You are running an outdated version"
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/324299.html
