曲径通幽论坛

标题: 进度指示 [打印本页]

作者: beyes    时间: 2011-9-2 09:35
标题: 进度指示
一、进度条
在使用 wget 下载文件时,会看到下载过程中有进度条进行指示下载进度。

在 shell 里制作这个进度条很简单,下面是两种方式:
[Bash shell] 纯文本查看 复制代码

#!/bin/sh

while true
do
    echo  -e "#\c"  
    sleep 3
done

上面用了一个转义字符 '\c' ,它的意思是“强制继续输出而不换行” 。在使用转义符时,在 BASH SHELL 里要用 -e 选项使能。在别的 shell 里可能不需要指定 -e选项,默认就可以。

也可以不使用 '\c' 来转义而使用 -n 选项来明确指在输出时不换行,如改成 echo -n "#" 即可。
作者: beyes    时间: 2011-9-2 10:06
二、旋转线

旋转线和 Windows 里系统忙时出现的时钟漏斗一样,一般也表示在忙等待。

下面代码演示旋转线的制作:
[Bash shell] 纯文本查看 复制代码


#!/bin/sh

function rotate_line()
{
interval=1
count="0"

while :
do
        count=`expr $count + 1`

        case $count 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
                        ;;
                *)      count="0"
                        ;;
        esac
done
}
#########################
#       Main            #
#########################

rotate_line &    #后台执行

rotateid=$!      # $! 变量表示后台最后工作的进程 PID,这里即是上面的 rotate_line() 函数

sleep   12

kill -9 $rotateid





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2