0

我想比较 if 语句中的两个十进制值,但它没有按预期给出。假设,我在 $value 变量中有一个十进制值。然后 if [ $value -eq 0.00 ]不工作,即使$value0.00

请在这方面提供帮助。提前致谢!

4

1 回答 1

2

有些 shell 支持浮动,有些不支持:

  • Bash 不支持浮点值。
  • Zsh 确实支持浮点值。

在任何情况下,-eq运算符的存在是为了执行整数之间的比较,而不是浮点数(即使在 Zsh 中)。

我不知道您使用的是哪种外壳,但有两种解决方案。选择您喜欢的:避免外部依赖或操纵真正的浮点数。

将浮点数视为字符串

这样,您可以直接将字符串与=运算符(字符串相等运算符)进行比较。

A=1.1
B=1.1
if [ "$A" = "$B" ] ; then
    echo 'Yeah!'
fi

使用 bc 执行真正的浮点运算

bc是一个计算器,可以在 shell 脚本表达式中调用(与任何其他程序一样)。

A=1.1
B=1.1
if [ "$(bc <<< "$A - $B")" = 0 ] ; then
    echo 'Yeah!'
fi
于 2013-08-29T07:22:27.997 回答