1 expr
# 只能做整数运算,运算符前后必须有空格,乘法需要转义。
[root@shell ~]# expr 10 + 1
11
[root@shell ~]# expr 10 - 1
9
[root@shell ~]# expr 10 * 3
30
[root@shell ~]# expr 10 / 3
3
# 针对变量
[root@shell ~]# num1=10
[root@shell ~]# num2=20
[root@shell ~]# expr $num1 + $num2
30
2 (())
# $(())双括号是运算,单括号是变量 $(date)。只支持整数运算,是效率最高的大运算。
[root@shell ~]# echo $((10+10))
20
[root@shell ~]# echo $((10-10))
0
[root@shell ~]# echo $((10*10))
100
[root@shell ~]# echo $((10/10))
1
[root@shell ~]# echo $((10+10-5))
15
[root@shell ~]# echo $((10+10-5*6))
-10
num1=10
num2=20
[root@shell ~]# echo $(($num1*$num2))
200
3 $[]
# 做整数运算
[root@shell ~]# echo $[10+10]
20
[root@shell ~]# echo $[10+10*20]
210
[root@shell ~]# echo $[10+10*20-1000]
-790
[root@shell ~]# echo $[10+10*20/1000]
10
4 let
# 整数运算,运算的结果需要用变量接收
[root@shell ~]# let a=10+10
[root@shell ~]# echo $a
20
[root@shell ~]# let a=10*10
[root@shell ~]# echo $a
100
[root@shell ~]# let a=10/10
[root@shell ~]# echo $a
1
[root@shell ~]# let a=$num1+$num2
[root@shell ~]# echo $a
30
[root@shell ~]# let i++
[root@shell ~]# echo $i
1
[root@shell ~]# let i++
[root@shell ~]# echo $i
2
[root@shell ~]# let i++
[root@shell ~]# echo $i
3
5 bc
# 整数及小数运算
# bc运算
[root@shell ~]# echo 10*10|bc
100
[root@shell ~]# echo 10*10.5|bc
105.0
[root@shell ~]# echo 10-5.5|bc
4.5
[root@shell ~]# echo 10/5.5|bc
1
# awk运算
[root@shell ~]# awk 'BEGIN{print 10+10}'
20
[root@shell ~]# awk 'BEGIN{print 10-10}'
0
[root@shell ~]# awk 'BEGIN{print 10*10}'
100
[root@shell ~]# awk 'BEGIN{print 10/10}'
1
[root@shell ~]# awk 'BEGIN{print 10^10}'
10000000000
[root@shell ~]# awk 'BEGIN{print 10-4.5}'
5.5
[root@shell ~]# awk 'BEGIN{print 10*4.5}'
45
[root@shell ~]# awk 'BEGIN{print 10/4.5}'
2.22222
6 小结
expr $(()) $[] let:只能做整数运算,$(())大运算效率最高
bc awk python:支持整数和小数运算
参考博客:https://www.pingface.com/archives/caculate