linux 的数字运算
linux 提供以下几种数字运算的方式
expr
-
[]
通过方括号将数字运算结果赋值给变量。 - bc 计算器
而通常来说,bc 计算器使用是最方便的。
脚本中使用bc
我们可以利用管道的特性,将内容传递给bc 计算器,再将返回的值赋值给变量。
基本格式:variable=$(echo "options; expression" | bc)
尝试一下,我们可以通过scale 来设定bc 的参数。
$ cat test8
#!/bin/bash
a=$(echo "scale=4;23/3" | bc)
echo "The answer is $a."
$ test8
The answer is 7.6666.
当然,对于表达式,我们也可以不局限于只使用数字,也可以使用shell 脚本里定义好的变量。
应用不同的变量,我们可以进行复杂的运算。对于较短的运算,还不是特别麻烦,但一旦涉及的运算内容复杂起来了,不断的使用bc 进行赋值就显得非常麻烦了。
这时候我们可以使用内联输入重定向。标准格式如下:
variable=$(bc << EOF
options
statements
expressions
EOF
)
尝试一下:
$ cat test9
#!/bin/bash
v1=10.33
v2=12.31
v3=213.22
v4=232.21
v5=$(bc << eof
scale=4
a1=($v1/$v2)
a2=($v3/$v4)
a1+a2
eof
)
echo "The anwser is $v5."
如果不使用内联输入重定向的情况。
$ cat test10
#!/bin/bash
v1=10.33
v2=12.31
v3=213.22
v4=232.21
a1=$(echo "scale=4;$v1/$v2"|bc)
a2=$(echo "scale=4;$v3/$v4"|bc)
v5=$(echo "scale=4;$a1+$a2"|bc)
echo "The anwser is $v5."
对比不难发现,使用重定向输入会简化许多。
网友评论