Shell 如何与if语句中的十进制值进行比较?

Shell 如何与if语句中的十进制值进行比较?,shell,Shell,我想比较if语句中的两个十进制值,但它并没有给出预期的结果。 假设$value变量中有一个十进制值。然后如果[$value-eq 0.00]不起作用,即使$value是0.00 请在这方面提供帮助。 提前谢谢 有些shell支持浮动,有些则不支持: Bash不支持浮点值 Zsh确实支持浮点值 在任何情况下,-eq运算符的存在都是为了执行整数之间的比较,而不是浮点运算(即使在Zsh中) 我不知道你用的是哪个外壳,但有两种解决方案。选择您喜欢的方法:避免外部依赖或操纵实浮动 考虑浮动作为字符串

我想比较if语句中的两个十进制值,但它并没有给出预期的结果。 假设$value变量中有一个十进制值。然后
如果[$value-eq 0.00]
不起作用,即使
$value
0.00

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

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

  • Bash不支持浮点值
  • Zsh确实支持浮点值
在任何情况下,
-eq
运算符的存在都是为了执行整数之间的比较,而不是浮点运算(即使在Zsh中)

我不知道你用的是哪个外壳,但有两种解决方案。选择您喜欢的方法:避免外部依赖或操纵实浮动

考虑浮动作为字符串 这样,您可以直接将字符串与
=
运算符(字符串相等运算符)进行比较

使用bc执行实浮点操作
bc
是一个可以在shell脚本表达式中调用的计算器(与任何其他程序一样)

A=1.1
B=1.1
if [ "$(bc <<< "$A - $B")" = 0 ] ; then
    echo 'Yeah!'
fi
A=1.1
B=1.1

if[“$(bc喜欢第一个方法。实际上我使用的是Bash shell,我使用了第一个方法并得到了正确的输出。非常感谢……)
A=1.1
B=1.1
if [ "$(bc <<< "$A - $B")" = 0 ] ; then
    echo 'Yeah!'
fi