linux 下shell实现一个进度条
少废话,直接上代码
#!/bin/bash
# 这个echo是主要是为了换行
echo " "
# 获取当前控制台的屏幕宽度,需要扣去一点点位置,便于显示百分比,这里我选择12字符就可以了
width=`stty size| awk '{print $2'}`
width=$(($width-12))
# 根据width得到能占满整行的进度条
line=$(seq $width| awk '{print "#"}' | tr '\n' ','| sed 's/,//g')
#echo $line
# 进度条显示
# $1 已完成数
# $2 总任务数
progress()
{
# 计算百分比
percent=`echo $1*100/$2 | bc`
# 计算进度条位置
len=`echo $1*$width/$2|bc`
# 注意最后的\r,回车清除上一次的控制台输出
printf "[%-${width}s][%d%%]\r" "${line:0:$len}" "$percent"
sleep 1
}
progress 0 4
progress 1 4
progress 2 4
progress 3 4
progress 4 4
# 小换行
printf "\n"
效果图,有时间我贴动图吧,暂时静态图忍忍