四则运算
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` 秒