曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4229|回复: 1
打印 上一主题 下一主题

[Bash shell] 进度指示

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2011-9-2 09:35:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、进度条
在使用 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 "#" 即可。

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
沙发
 楼主| 发表于 2011-9-2 10:06:02 | 只看该作者
二、旋转线

旋转线和 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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 05:20 , Processed in 0.065848 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表