【小技巧】如何让shell script 跑的快一点

【小技巧】如何让shell script 跑的快一点

节选自hp.com.tw

在我的 shell script 中使用了 expr 指令,藉以完成算戌哕算。
但是它跑起?好慢喔,呃??铨有解??

有的。只要? expr 呃?外部指令,改? shell 的?部?程 construct ((...)) 即可。

如何?我的shell script 跑的快一?
HP  质?中心工程?   ?迪武  文

在我的 shell script 中使用了 expr 指令,藉以完成算戌哕算。
但是它跑起?好慢喔,呃??铨有解??

有的。只要? expr 呃?外部指令,改? shell 的?部?程 construct ((...)) 即可。

真的?? ?我???小程式???一下。

假韵我?要?算1到2000的和,用 expr ?出?的程式如下:
$ cat expr.sh
#! /usr/bin/sh
i=1
n=2000
s=0
while [ $i -le $n ]
do
s=`expr $s + $i`
i=`expr $i + 1`
done
echo "s=" $s "\n"
而其?行所需的?殓?:
$ timex ./expr.sh
s= 2001000
real 47.15
user 1.43
sys 45.14
??使用到 expr 外部指令的部分改成 shell 的?部?程 construct ((...)) :
$ cat const.sh
#! /usr/bin/sh
i=1
n=2000
s=0
while [ $i -le $n ]
do
((s=$s+$i))
((i=$i+1))
done
echo "s=" $s "\n"

再??行一下看有?有快一?。
$ timex ./const.sh
s= 2001000
real 0.40
user 0.27
sys 0.08

天啊,整整快了117倍。
所以了,切?切?,? shell script ?,多用shell 的?部?程 construct ((...)),少用外部指令 expr。

linux下使用time命令来替代 timex      
感谢灌水大侠 rocken       
另: shell 有很多 built-in 的 string 处理功能, 因此应当尽量避免调用 sed 等 external 的 command      
谢谢,学习学习...