linux / shell 进行加减乘除
1、awk 结合 printf 的通用性最强,可计算整数和浮点数
2、bc也可计算整数和浮点数,但多用于计算浮点数
3、expr 只能计算整数,常用于计算整数
4、(()) 除了计算整数,还能比较整数,常用于if 条件句
一、两者都是整数
num1=3
num2=5
########## 加法 ##########
expr $num1 + $num2
awk 'BEGIN{printf "%d\n",('$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 "%d\n",('$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 "%d\n",('$num1' * '$num2')}'
echo "$num1 * $num2" | bc
((res=$num1 * $num2)) && echo $res
结果
15
15
15
15
########## 除法 ##########
向下取整
expr $num1 / $num2
awk 'BEGIN{printf "%d\n",('$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 "%.1f\n",('$num1' + '$num2')}'
结果
11.3
11.3
########## 减法 ##########
echo "scale=2;$num1 - $num2" | bc
awk 'BEGIN{printf "%.1f\n",('$num1' - '$num2')}'
结果
4.3
4.3
########## 乘法 ##########
echo "scale=2;$num1 * $num2" | bc
awk 'BEGIN{printf "%.1f\n",('$num1' * '$num2')}'
结果
27.30
27.3
########## 除法 ##########
echo "scale=2;$num1 / $num2" | bc
awk 'BEGIN{printf "%.1f%%\n",('$num1'/'$num2')*100}'
结果
44.9%
222.9%