linux 下shell实现一个进度条

少废话,直接上代码

#!/bin/bash

# 这个echo是主要是为了换行
echo " "

# 获取当前控制台的屏幕宽度,需要扣去一点点位置,便于显示百分比,这里我选择12字符就可以了
width=`stty size| awk '{print $2'}`
width=$(($width-12))

# 根据width得到能占满整行的进度条
line=$(seq $width| awk '{print "#"}' | tr '
' ','| sed 's/,//g')
#echo $line

# 进度条显示
# $1 已完成数
# $2 总任务数
progress()
{   
    # 计算百分比
    percent=`echo $1*100/$2 | bc`
    # 计算进度条位置
    len=`echo $1*$width/$2|bc`
    # 注意最后的
,回车清除上一次的控制台输出
    printf "[%-${width}s][%d%%]
" "${line:0:$len}" "$percent"
    sleep 1
}


progress 0 4
progress 1 4
progress 2 4
progress 3 4
progress 4 4

# 小换行
printf "
"

效果图,有时间我贴动图吧,暂时静态图忍忍

原文地址:https://www.cnblogs.com/westlin/p/14620922.html