首页 > 学技术 > 技术网文 > Linux Shell > 正文

[精彩] 关于进度条的显示


来源 chinaunix.net 酷勤网整理

1、使用一系列圆点来指示进度

--------后台循环------------
#!/bin/bash
while true
do 
echo -e ".\c"
sleep 3
done &

BG_PID=$!

./test.sh

kill -9 $BG_PID

-----------后台函数---------
#!/bin/bash
dots()
{
while true
do 
echo -e ".\c"
sleep 3
done
}

#########################################
########## Begin of Main ################
#########################################

dots &

BG_PID=$!

./test.sh

kill -9 $BG_PID


2、使用一条旋转线来指示进度

#!/bin/bash

rotate()
{
INTERVAL        = 1                   # Sleep time between "twirls"
TCOUNT          = "0"                 # For each TCOUNT the line twirls one increment

while :                               # Loop forever ...until this function is killed
do
TCOUNT   = $(($TCOUNT + 1))    # Increment the TCOUNT

case $TCOUNT in
"1") echo -e '-' "\b\c"
     sleep $INTERVAL
     ;;
"2") echo -e '\\' "\b\c"
     sleep $INTERVAL
     ;;
"3") echo -e "|\b\c"
     sleep $INTERVAL
     ;;
"4") echo -e "/\b\c"
     sleep $INTERVAL
     ;;
*  ) TCOUNT="0" ;;      # Reset the TCOUNT to "0",zero
esac
done
} # End of Function rotate

#########################################
########## Begin of Main ################
#########################################


rotate &

ROTATE_PID=$!

./test.sh

kill -9 $ROTATE_PID

# cleanup...

echo -e "\b\b "


# End of Example







 yuri-master 回复于:2005-07-10 20:46:03

小弟不才,来凑个数

#!/bin/sh 
#   Yuri.G 
#   Yuri.unix@gmail.com 
#   Yuri Family Data Center 
#   2005-07-10 
tr() 

sl='sleep 0.5' 
while true 
do 
echo -e '-'"\b\c";$sl 
echo -e '\\'"\b\c";$sl 
echo -e "|\b\c";$sl 
echo -e "/\b\c";$sl 
done 

tr &
TR_PID=$!#让进度条显示操作后台运行,并获取它的进程ID 
sleep 10#把这个换成你要做的事情。 
kill -9 $TR_PID#kill掉进度条 




 joyaid 回复于:2005-07-11 15:05:28

楼上这样写不行"tr &;TR_PID=$!#"

&;不能在一起.


 yuri-master 回复于:2005-07-11 16:43:38

明白了.马上改


 yuri-master 回复于:2005-07-12 15:01:12

[root@Fedora4 demo]# sh ww.sh
..........ww.sh: line 13: 29632 已杀死               while true; do
    echo -e ".\c"; sleep 0.6;
done
[root@Fedora4 demo]#

他会提示已杀死怎么去掉啊?




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=575096
转载请注明作者名及原文出处



收藏本页到: