我有一个变量VarExp
有以下两个值
1.5.2
1.5.3
我还有一个变量
VarCurr
值如下1.8.1
我想比较
VarCurr
和VarExp
并且只想在VarCurr >= VarExp
我已经编写了以下代码,但它总是返回
echo SUCCESS
VarExp='1.5.2 1.5.3'
VarCurr='1.8.1'
printf -v versions '%s\n%s' "$VarExp" "$VarCurr"
if [[ $versions = "$(sort -V <<< "$versions")" ]]; then
echo 'FAILURE'
else
echo 'SUCCESS'
fi
FAILURE
需要>=包含在VarCurr
中的最低值 最佳答案
对于-V
,使用GNU黑色:
$ cat tst.sh
#!/bin/bash
varExp='1.5.2 1.5.3'
varCurr=$1
minVarExp=$(printf '%s\n' $varExp | sort -V | head -1)
maxOfVers=$(printf '%s\n' "$minVarExp" "$varCurr" | sort -V | tail -1)
if [[ $maxOfVers = $varCurr ]]; then
echo 'SUCCESS'
else
echo 'FAILURE'
fi
$ ./tst.sh 1.8.1
SUCCESS
$ ./tst.sh 1.5.1
FAILURE
$ ./tst.sh 1.5.2
SUCCESS