【发布时间】:2023-03-10 04:14:01
【问题描述】:
我有一个变量 VarExp 具有以下 2 个值
1.5.2
1.5.3
我有另一个变量 VarCurr 具有以下 1 个值
1.8.1
我想将VarCurr 与VarExp 进行比较,并且仅在以下情况下才想echo SUCCESS
VarCurr >= VarExp
我编写了以下代码,但它总是返回FAILURE
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
VarCurr 需要 >= VarExp 中包含的最小值
【问题讨论】:
-
我注意到您使用的是赋值而不是相等运算符。当条件满足时,你确定不想要成功吗?
-
当然,条件满足我要
'SUCCESS'。 -
@argx
=是bash中的相等运算符。条件表达式中没有赋值。 -
@Barmar 很好的信息,我的错误。还有一个SO question about it。感谢您指出这一点。
-
我认为你有成功和失败倒退。
$VarCurr高于$VarExp,所以它排在它之后,这就是你在$versions中的顺序。所以当它等于排序结果时,应该是SUCCESS,而不是`FAILURE。