|
做毕业做累了,写个shell玩玩。
目的:我们执行一些脚本时,如果执行比较时间的话,有个进度条就可以方便知道脚本正在执行中。
- #!/bin/sh
- ########################################
- # 2006.5.2 created by hjack
- #
- ########################################
- Usage(){
- echo "Usage: bar.sh script"
- exit 1
- }
- #---------------------------------------
- if [ $# -lt "1" ];then
- Usage "$@"
- fi
- count=0
- echo -n "running"
- while true
- do
- count=`expr $count + 1`
- echo -n "."
- countj=`expr $count % 5`
- if [ $countj -eq "0" ];then
- echo -e -n "\b\b\b\b\b \b\b\b\b\b"
- fi
- sleep 1
- done &
- PID=$!
- ./$@
- kill $PID
- echo -e "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bfinished. "
复制代码
说明:用一个while死循环在后台运行,并记下它的进程号,输出点符号,当点符号达到五个时,清空再重新输出,不断重复。
由于该循环是在后台运行,所以下在的代码还是会执行 ,./$@就是把参数传入的脚本,在此执行。执行完后就kill掉死循环。
但是对于系统命令还不能执行,比如./bar.sh ls 这会出错。
做了一个小动画,效果见图。
[ 本帖最后由 hjack 于 2006-5-4 15:31 编辑 ] |
|