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

时间:2013-08-29 07:10:30

标签: shell

我想在if语句中比较两个十进制值,但它没有按预期给出。 假设,$ value变量中有一个十进制值。 if [ $value -eq 0.00 ] $value 0.00后,{{1}}无效。

请帮助这方面。 提前谢谢!

1 个答案:

答案 0 :(得分:2)

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

  • Bash不支持浮点值。
  • Zsh支持浮动值。

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

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

将浮动视为字符串

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

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