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"

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

posted @ 2021-04-06 11:06  myCodeLikeShit  阅读(622)  评论(0编辑  收藏  举报