后台操作中经常用到计算,脚本如python是很方便,但是相对于shell命令,还是不够易用,这里介绍几种常见的计算方法并举例
echo
echo可以用来做简单的计算,直接上例子:
echo "$((1+2)) $((1-2)) $((2*2)) $((3/2))"
expr
expr 稍微强大些,但是也只能整数:
expr length "This is a string" #计算长度
expr substr "This is a string" 1 4 #获取字串,索引从1开始,从第1个字符开始,长度为4
expr index "This is a string" "t" #第1个字母t出现的位置,索引从1开始
loop=0
loop=$(expr $loop + 1) #脚本循环
expr 1 + 2 #加
expr 1 - 2 #减
expr 2 \* 2 #乘,乘号要转义
expr 5 / 2 #除,整除,无小数
expr 5 % 2 #取余
bc
发现echo和expr都只能做整数的除法,这一点很不爽,bc很好解决了这个问题,对于除法,能给出精确的位数,bc本是交互使用的,就像计算器一样,一般用echo配合使用
echo "ibase=16;FF" |bc #将16进制的FF输出为10进制的255, 注意,英文只能大写
echo "ibase=2;1001" |bc #将2进制的1001转成10进制的9
echo "ibase=16;obase=2;FFFF" |bc #输入为16进制,输出为2进制
echo "(6+2)*3" |bc #因为配合echo使用,所以乘号不需要转义
echo 15/7 |bc
echo "scale=3;15/7" |bc #看到了咩?这了设置小数位数为3位,结果是2.142
echo "3*4;5+2;5^2;18/4" |bc #这里有更强大的乘方