shell加减乘除运算
1. 整数的加减乘除
1. 方括号
#!/bin/bash
var1=$[1+3]
var2=$[3-1]
var3=$[3*2]
var4=$[4/2]
var5=$[$var1+$var2]
2. 双小括号
#!/bin/bash
var1=$((1+3))
var2=$((3-1))
var3=$((3*2))
var4=$((4/2))
var5=$(($var1+$var2))
以上两种方法可以实现shell中的加减乘除运算,运算符两边有没有有没有空格都可以正常计算,但是不能进行小数的运算。
2. 小数的加减乘除
1. 使用bc
- 加法
运算结果的小数位数以相加数中最大位数为准,不可以用scale自定义结果小数位数。
#!/bin/bash
var1=$(echo "1.23+2.444" | bc)
- 减法
运算结果的小数位数以相减数中最大位数为准,不可以用scale自定义结果小数位数。
#!/bin/bash
var1=$(echo "3.2-2.444" | bc)
- 乘法
运算结果的小数位数以相乘数中最大位数为准,可以用scale自定义结果小数位数,但是只有scale给定的位数大于乘数中的最大位数,且小于计算结果的实际位数时生效。
#!/bin/bash
var1=$(echo "3.2*2.444" | bc)
var2=$(echo "scale-2;3.2*2.444" | bc)
- 除法
运算结果为整数部分,小数直接切割舍掉;可以用scale自定义结果小数位数,小数位数保留为截取至指定位数,不够位数则补0。
#!/bin/bash
var1=$(echo "5/2" | bc)
2. 使用awk(四舍五入完成小数的计算)
- awk直接进行计算
a=2
b=3
c=$(awk 'BEGIN{print "'$a'" / "'$b'"}')
0.666667
- awk控制小数位数(四舍五入)
a=2
b=3
c=$(echo "$a $b" |awk '{printf("%.2f",$1/$2)}')
#首先使用echo输出变量,然后通过$1,$2,...引用变量值
0.67