通过shell进行数学计算

对于基本运算,可以使用let, $(())和$[]

对于高级运算,使用exprbc这两个工具

[hupeng@hupeng-vm shell]$n1=10
[hupeng@hupeng-vm shell]$n2=2
[hupeng@hupeng-vm shell]$let res=n1+n2  #let的使用
[hupeng@hupeng-vm shell]$echo $res
12
[hupeng@hupeng-vm shell]$let res=n1*n2
[hupeng@hupeng-vm shell]$echo $res
20
[hupeng@hupeng-vm shell]$let res+=1  #let 支持+=, -=, *=,/=,%=
[hupeng@hupeng-vm shell]$echo $res
21
[hupeng@hupeng-vm shell]$let res-=12
[hupeng@hupeng-vm shell]$echo $res
9
[hupeng@hupeng-vm shell]$let res/=3
[hupeng@hupeng-vm shell]$echo $res
3
[hupeng@hupeng-vm shell]$let res++   #let支持++,--操作
[hupeng@hupeng-vm shell]$echo $res
4
[hupeng@hupeng-vm shell]$let --res
[hupeng@hupeng-vm shell]$echo $res
3
[hupeng@hupeng-vm shell]$a=10
[hupeng@hupeng-vm shell]$b=2
[hupeng@hupeng-vm shell]$res=$[ a * b]  # $[]的使用
[hupeng@hupeng-vm shell]$echo $res
20
[hupeng@hupeng-vm shell]$res=$[ $res / 4 + 3 ]  # []中也可以使用$前缀
[hupeng@hupeng-vm shell]$echo $res
8
[hupeng@hupeng-vm shell]$res=$(( a + b )) # $(()使用 前面要加$
[hupeng@hupeng-vm shell]$echo $res
12
[hupeng@hupeng-vm shell]$res=`expr 10 + 2`  # expr的使用
[hupeng@hupeng-vm shell]$res=$(expr $a + $b)
[hupeng@hupeng-vm shell]$res=$(expr $a * $b)
expr: syntax error
[hupeng@hupeng-vm shell]$res=$(expr $a * $b)  # 乘号要用*表示

以上只能进行整数运算,要进行浮点数运算,需要使用bc

[hupeng@hupeng-vm shell]$echo "2 * 2.3" | bc
4.6
[hupeng@hupeng-vm shell]$a=3
[hupeng@hupeng-vm shell]$echo "$a * 1.5" | bc
4.5
[hupeng@hupeng-vm shell]$#其他参数可以置于要执行的具体操作之前,同时以分号作为定界符,通过stdin传给bc
[hupeng@hupeng-vm shell]$echo "scale=1;2 / 3" | bc #scale用来指定精度(小数点后的位数)
.6
[hupeng@hupeng-vm shell]$echo "scale=2;2 / 3" | bc
.66
[hupeng@hupeng-vm shell]$echo "scale=3;2 / 3" | bc
.666
[hupeng@hupeng-vm shell]$n=100 #10进制
[hupeng@hupeng-vm shell]$echo "obase=2;$n" | bc   #转换为二进制输出
1100100
[hupeng@hupeng-vm shell]$n=1100100
[hupeng@hupeng-vm shell]$echo "obase=10;ibase=2;$n" | bc  # 将二进制转化为10进制输出
100
[hupeng@hupeng-vm shell]$echo "sqrt(100)" | bc  #求平方根
10
[hupeng@hupeng-vm shell]$echo "10 ^ 3" | bc   #求幂
1000
[hupeng@hupeng-vm shell]$echo "sqrt(-1)" | bc   #不支持复数
Runtime error (func=(main), adr=4): Square root of a negative number
原文地址:https://www.cnblogs.com/hupeng1234/p/6736439.html