如何比较两个数字

如何比较两个数字

我有以下两个值:

val1=13.2.8
val2=15.0.5

我想检查是否val1小于val2,我尝试过:

echo "if ($val1<$val2) 1" | bc

但它抛出以下错误:

syntax error on line 1, teletype

对于普通浮点数来说,它工作得很好。

实现这一目标的最佳方法是什么?

答案1

这些不是数字,至少不是数学意义上的数字。你可能想要的是版本字符串比较,由 GNU(也可能是其他)提供sort --version-sort/ sort -V

if [[ "$(sort --version-sort <<< "$(printf '%s\n' "$val1" "$val2")" | head --lines=1)" = "$val1" ]]
then
    echo "$val1 <= $val2"
fi

答案2

您不能对这些值使用算术比较。您应该使用字符串比较。在 bash 中你可以使用 '[[' :

[[ $val2 > $val1 ]] && echo "$val2 is greater than $val1"

相关内容