shell 数学计算的N个方法
let使用方法
root@172-18-21-195:/tmp# n1=5
root@172-18-21-195:/tmp# n2=10
root@172-18-21-195:/tmp# let result=n1+n2
root@172-18-21-195:/tmp# echo $result
15
root@172-18-21-195:/tmp# let n1++
root@172-18-21-195:/tmp# echo $n1
6
root@172-18-21-195:/tmp# let n1--
root@172-18-21-195:/tmp# echo $n1
5
root@172-18-21-195:/tmp# let n1+=6
root@172-18-21-195:/tmp# echo $n1
11
$[] 来计算
root@172-18-21-195:/tmp/pratice# n1=5
root@172-18-21-195:/tmp/pratice# n2=10
root@172-18-21-195:/tmp/pratice# result2=$[ n1 + n2 ]
root@172-18-21-195:/tmp/pratice# echo $result2
15
$(()) 计算
root@172-18-21-195:/tmp# echo $(( 1+2 ))
3
root@172-18-21-195:/tmp# echo $((1-9))
-8
expr 来计算
root@172-18-21-195:/tmp# result=`expr 10-3` # 运算符前后没有空格间隔,导致无法运算
root@172-18-21-195:/tmp# echo $result
10-3
root@172-18-21-195:/tmp# result=`expr 10 - 3`
root@172-18-21-195:/tmp# echo $result
7
root@172-18-21-195:/tmp# result=$(expr $n1 + 4)
root@172-18-21-195:/tmp# echo $result
15
root@172-18-21-195:/tmp# echo $n1
11
bc 来计算
root@172-18-21-195:/tmp# echo "4*12*0.3" | bc
14.4
root@172-18-21-195:/tmp# result2=`echo "4*12*0.3" | bc`
root@172-18-21-195:/tmp# echo $result2
14.4
通过scale来控制精度
root@172-18-21-195:/tmp# echo "scale=3;3.1415926*7/2.1234987" | bc
10.356
root@172-18-21-195:/tmp# echo "scale=30;3.1415926*7/2.1234987" | bc
10.356092141709340344780997511324
10进制与2进制转换
root@172-18-21-195:/tmp# n=100
root@172-18-21-195:/tmp# echo "obase=2;$n" | bc
1100100
root@172-18-21-195:/tmp# n2=1100100
root@172-18-21-195:/tmp# echo "obase=10;ibase=2;$n2" | bc
100