- 论坛徽章:
- 0
|
本文原创
欢迎转载
#!/bin/sh
# $1 :总大小
# $2 :当前值
#
################### funcitons #####################
calu_munber_len()
{
number=$1
len=0
while [ $number -ne 0 ]
do
len=`expr $len + 1`
number=`expr $number / 10`
done
return $len
}
calu_progressbar_len()
{
return `expr $1 - 13 - $2 \* 2`
}
calu_percent()
{
return `expr $2 \* 100 / $1`
}
show_progress()
{
#计算进度条显示的格数和空格数
temp1=`expr $1 \* $2 / 100`
#echo $temp1
temp2=`expr $1 - $temp1`
#绘制进度条,添加进度
bar="["
i=0
while [ $i -lt $temp1 ]
do
i=`expr $i + 1`
bar=$bar">"
done
#绘制进度条,添加空格
i=0
while [ $i -lt $temp2 ]
do
i=`expr $i + 1`
bar=$bar" "
done
bar=$bar"] [$2%] [$3/$4]"
echo -n "$bar"
}
#####################################################
if [ "$1" = "" ] ; then
echo "arg1 must not be NULL"
exit 1
elif [ "$2" = "" ] ; then
echo "arg2 must not be NULL"
exit 1
fi
if [ $1 -eq 0 ] ; then
echo "arg1 must not be 0"
else
#echo $1
#echo $2
WINDOW_LINES=$(tput lines)
WINDOW_COLS=$(tput cols)
tput init
tput cup `expr $WINDOW_LINES - 1` 0
#计算总值的长度
calu_munber_len $1
numberlen=$?
#echo "len is $numberlen"
#计算进度条的长度
calu_progressbar_len $WINDOW_COLS $numberlen
progressbarlen=$?
#echo "progresslen is $progressbarlen"
#计算当前百分比
calu_percent $1 $2
percent=$?
#echo "percent is $percent%"
#显示进度条
show_progress $progressbarlen $percent $2 $1
fi
将上述内容保存为脚本文件progress
#!/bin/sh
i=0
while [ $i -le $1 ]
do
./progress $1 $i
i=`expr $i + 5`
done
将上述内容保存为脚本文件test
将progress和test文件放在一个目录下,执行./test num,将会看到一个进度条,例如:
./test 100
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ] [85%] [85/100]
另外,大家可以改变一下终端窗口的宽度看看,进度条还可以自动适应窗口宽度哦~~
[ 本帖最后由 Cy158358 于 2009-1-16 14:06 编辑 ] |
|