1、awk 结合 printf 的通用性最强,可计算整数和浮点数 2、bc也可计算整数和浮点数,但多用于计算浮点数 3、expr 只能计算整数,常用于计算整数 4、(()) 除了计算整数,还能比较整数,常用于if 条件句一、两者都是整数
num1=3
num2=5
########## 加法 ##########
expr $num1 + $num2
awk 'BEGIN{printf "%dn",('$num1' + '$num2')}'
echo "$num1 + $num2" | bc
((res=$num1 + $num2)) && echo $res
# 自增长
let "res++" && echo $res
结果
8 8 8 8 9
########## 减法 ##########
expr $num1 - $num2
awk 'BEGIN{printf "%dn",('$num1' - '$num2')}'
echo "$num1 - $num2" | bc
((res=$num1 - $num2)) && echo $res
# 自减少
let "res--" && echo $res
结果
-2 -2 -2 -2 -3
########## 乘法 ##########
expr $num1 * $num2
awk 'BEGIN{printf "%dn",('$num1' * '$num2')}'
echo "$num1 * $num2" | bc
((res=$num1 * $num2)) && echo $res
结果
15 15 15 15
########## 除法 ##########
向下取整
expr $num1 / $num2
awk 'BEGIN{printf "%dn",('$num1' / '$num2')}'
echo "$num1 / $num2" | bc
((res=$num1 / $num2)) && echo $res
结果
0 0 0 null(为空)二、至少有一个是浮点数(小数)
num1=7.8
num2=3.5
########## 加法 ##########
# scale=2,代表保留两位小数
echo "scale=2;$num1 + $num2" | bc
awk 'BEGIN{printf "%.1fn",('$num1' + '$num2')}'
结果
11.3 11.3
########## 减法 ##########
echo "scale=2;$num1 - $num2" | bc
awk 'BEGIN{printf "%.1fn",('$num1' - '$num2')}'
结果
4.3 4.3
########## 乘法 ##########
echo "scale=2;$num1 * $num2" | bc
awk 'BEGIN{printf "%.1fn",('$num1' * '$num2')}'
结果
27.30 27.3
########## 除法 ##########
echo "scale=2;$num1 / $num2" | bc
awk 'BEGIN{printf "%.1f%%n",('$num1'/'$num2')*100}'
结果
44.9% 222.9%



