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