四则运算

shell中的算数运算的支持。直接使用两个小括号,里面可以支持四则混合运算。一般情况下,整数,用这种方式就行。遇到小数,使用bc命令来完成即可。

运算

expr 运算符号两边要增加空格。(())对空格貌似要求不严格,小括号貌似所以一个变量来接收变量。

j=10
k=2

((i=$j+$k)) 等价于 i=`expr $j + $k`
((i=$j-$k)) 等价于 i=`expr $j - $k`
((i=$j*$k)) 等价于 i=`expr $j \* $k`
((i=$j/$k)) 等价于 i=`expr $j / $k`

# 还能满足混合运算
((i=$j*2+$k/2)) 

各种方式对比

运算操作符/运算命令 说明
(( )) 用于整数运算,效率很高,推荐使用
let 用于整数运算,和 (()) 类似。
[$] 用于整数运算,不如 (()) 灵活。
expr 可用于整数运算,也可以处理字符串。比较麻烦,需要注意各种细节,不推荐使用。
bc Linux下的一个计算器程序,可以处理整数和小数。Shell 本身只支持整数运算,想计算小数就得使用 bc 这个外部的计算器。
declare -i 将变量定义为整数,然后再进行数学运算时就不会被当做字符串了。功能有限,仅支持最基本的数学运算(加减乘除和取余),不支持逻辑运算、自增自减等,所以在实际开发中很少使用。

只学习 (()) 和 bc 即可,不用学习其它的了:(()) 可以用于整数计算,bc 可以小数计算。

计算命令执行时间

start_time=$SECONDS
其他的命令
echo `expr $SECONDS - $start_time`  秒