我有一个变量VarExp有以下两个值

1.5.2
1.5.3

我还有一个变量VarCurr值如下
1.8.1

我想比较VarCurrVarExp并且只想在
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

09-04 01:18