该题实际需求是获取对应列值进行计算,期间需要了解ps命令结果中每一列代表的含义
#!/usr/bin/env bash function test() { local sum=0 local arr=() while read line; do arr=(${line}) sum=$((${sum} + ${arr[5]})) done < nowcoder.txt echo ${sum} } test
- 只能用于整型,计算结果只有整数,小数点后直接丢弃
- expr 1 + 2 数字和符号之间必须有空格!
- $[1/2] 计算结果只有整数,小数点后直接丢弃
$(()) 计算结果只有整数,小数点后直接丢弃, 幂运算 $(( 2 ** 3 )) 前式即:2的3次幂
- let y=2+3 / let x=y+2 / let x=${y}+2 计算结果只有整数,小数点后直接丢弃
- 可以浮点运算的工具
- bc计算器 echo " 1/3" | bc 结果为0 必须在算术式前先指定保留位数 scale=2;(保留俩位,用分号结束,在接算术式)
如:echo "scale=2; 1/3" | bc
以上bc结果是.33 少了个位上的0,因为bc会在小数点前为结果为0时,省略; 且不管保留几位小数,不会自动四舍五入 - awk 'BEGIN {print 1 / 3}' 不指定格式,最多保留6位小数,不会自动四舍五入,只有小数点后的位数大于4时会自动进行进位
使用printf函数指定保留的小数位数awk 'BEGIN { printf "%0.2f\n" ,1/2}' / awk 'BEGIN { printf("%0.2f\n", 1/2) }'
- bc计算器 echo " 1/3" | bc 结果为0 必须在算术式前先指定保留位数 scale=2;(保留俩位,用分号结束,在接算术式)