bash 命令行算术 echo $((x-y)) 如何将结果除以 z?

bash command line arithmetic echo $((x-y)) how to divide result by z?

我正在尝试找出一种方法来获取基本方程的结果并除以另一个整数。所以以简单的形式看起来像; A-B = C 然后用 C 除以 D

我知道等式的第一部分是 echo $((A-B)) 但我如何得到该结果除以 D?

如有任何反馈,我们将不胜感激!

你可以在里面做计算$(( ))

如果你想计算(A-B)/C,你可以把它放在$(( ))里面:

echo $(( (A-B)/C ))

请注意,结果将被截断为零,因为 bash 不支持小数。

记得确保表达式前有 $(( 后有 )),并且里面的所有括号都匹配。

使用shell

这(取自评论)失败,因为括号不平衡:

$ echo $((2147483633-807279114))/5184000))

试试看:

$ echo $(( (2147483633-807279114)/5184000 ))
258

上面returns一个整数因为shell只做整数运算

使用bc

如果你想要精确的浮点数,使用的标准工具是bc:

$ echo '(2147483633-807279114)/5184000' | bc -l
258.52710628858024691358

使用python

Python同时支持整数和浮点数运算:

$ python -c 'print (2147483633-807279114)//5184000'
258
$ python -c 'print (2147483633-807279114)/5184000.0'
258.527106289

Python,带有 numpy 扩展,即使您的需求扩展到复杂的科学计算也是一个很好的工具。

使用awk

awk,一个标准的unix工具,支持浮点运算:

$ awk 'BEGIN{print (2147483633-807279114)/5184000;quit}'
258.527
dc <<< "$A $B - $D / p"

注1:p打印最终结果

注2:使用dc需要先输入数字再运算