shell写的进度指示

1. 旋转指针 

代码: 
#!/bin/sh 
proc() { 

    c0='-' 
    c1='/' 
    c2='|' 
    c3='/' 
    begin=$1 
    end=$2 
    row=$3 
    pos1=`expr $begin + 1` 
    pos2=`expr $begin + 5` 

    printf "/033[2J" 
    while [ $begin -le $end  ]; do 
        index=`expr $begin % 4` 
        pro=`echo "scale=0; ${begin}*100/$end" | bc` 
        eval printf /"'/033[${row};${bos1}H$c'$index  '$pro%%  '/" 
        begin=`expr $begin + 1` 
    done 
    echo "done" 


# call subroutine 
proc 0 102 20 
 
2. 进度条 

代码: 
#!/bin/sh 

abort() { 
    printf  "/033[m/n" 
    exit 


# do nothing, just simulate time consume. 
idle() { 
    i=1 
    sum=`date +%S` 
    sum=`expr $sum /* $sum | cut -b 1` 
    sum=`expr $sum /* 10` 
    while [ $i -le $sum ]; do 
        i=`expr $i + 2 ` 
        trap abort  2 
    done 


proc() { 
    begin=$1 
    end=$2 
    row=$3 
    pos1=`expr $begin + 1` 
    pos2=`expr $end - 1` 
    mid=`echo "($begin+$end)/2-2" |bc` 

    printf "/033[2J" 
    printf "/033[${row};${begin}H[" 
    printf "/033[${row};${end}H]" 
    while [ $pos1 -le $pos2  ]; do 
        pro=`echo "scale=0; ($pos1 - $begin)*100/($pos2-$begin)" | bc` 
        if [ $pos1 -gt $mid ]; then 
            printf "/033[7m/033[${row};${mid}H$pro%%/033[${row};${pos1}H:" 
        else 
            printf "/033[m/033[${row};${mid}H$pro%%/033[7m/033[${row};${pos1}H:" 
        fi 
        pos1=`expr $pos1 + 1` 
        idle 
        trap abort  2 
    done 
    printf "/033[m/n" 
    echo "done" 


# call subroutine 
printf "### proc 1 80 10 ### hit ENTER to continue " 
if read a; then 
    proc 1 80 10 
fi 

printf "### proc 25 55 10 ### hit ENTER to continue " 
if read a; then 
    proc 25 55 20 
fi 
 

3、

drawper ()
{
_per=`expr $1 /* 100 / $2`
case `expr $_per / 4 % 4` in
0) _char="|"
;;
1) _char="/"
;;
2) _char="-"
;; 
3) _char="//"
;; 
esac
printf "/r$_char $_per%%"
if [ $1 -eq $2 ];then
printf "/n"
fi
}

i=1
while [ $i -le 100 ]
do
drawper $i 100
i=`expr $i + 1`
done

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值