Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103071983
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-18 21:23:04

作者:红袖添香   
  
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
阅读(397) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~