我试图在Linux销售中实现这一点
set a=1.2345
set b=2.34
if (abs(a-b)>1.2) then
...
endif
我面临几个问题:
我无法解决我的问题并立即处理所有这些问题。我搜索了很多页面,有些解决方案对我不起作用。例如,我似乎没有abs功能。
非常感谢任何帮助。
答案 0 :(得分:2)
bash
不做浮点运算。标准实用程序bc
可以。这使用bc
来执行您要求的测试:
a=1.2345
b=2.34
r=$(echo "($a - $b)^2 > 1.2^2" | bc)
if [ "$r" -eq 1 ]
then
echo True
else
echo False
fi
由于bc
没有abs
函数,因此上面的代码使用简单的解决方法来平衡不等式的每一边。如果测试为真,则bc
会返回1
,如果为真,则0
会返回r
。此输出保存在变量r
中。使用1
测试[ "$r" -eq 1 ]
与if
的相等性。 {{1}}语句会相应地做出响应。