|
发表于 2007-3-20 17:58:49
|
显示全部楼层
建议用let,而不是expr.
对比一下:
- #!/bin/bash
- sum=0;
- for ((i=0;i<=1000;i++));
- do
- if [[ $1 -eq 0 ]];
- then
- let sum=$sum+$i;
- else
- sum=`expr $sum + $i`;
- fi;
- done;
- echo $sum;
复制代码
运行结果:
- time ./test.sh 0
- 500500
- real 0m0.057s
- user 0m0.060s
- sys 0m0.000s
复制代码
作为对比:
- time ./test.sh 1
- 500500
- real 0m4.053s
- user 0m1.290s
- sys 0m1.830s
复制代码
个人感觉是由于expr被多次调用产生了过多的开销。 |
|