暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Shell 脚本案例【21】进度条

皮皮克克 2025-05-05
169

关注+星标,干货第一时间送达



有点难过,

五一假期马上就要结束了。。。

还记得4-30号那天下班后,是多么的快乐

为什么快乐总是TM的这么短暂呢?

不明白,不明白。

为什么牛马的生活这么煎熬呢?

气人,气人。

如果自己能够把握生活的进度条,该多好,

让快乐慢一点,让难过快一点。

这个估计做不到,

没关系,小编给你演示怎么用shell脚本写进度条,

自己把控。


一、解决方案

演示工具:Centos7.9 + MobaXterm

常见的进度条是这种:

无外乎4个元素:

方括号、井号、数字、百分号

方括号和百分号都是固定的,

井号只是会递增,和数字的相关连的。

那就简单了,

有多少数字,就打印多少井号就行。

举个例子:

这样就能打印任意多个井号。

看看代码吧:

#!/bin/bash
 

progress_bar(){
#当前进度偏移量
local process=$1
#总进度
local total=$2
#进度条长度
local width=100

#当前进度百分比
  percent=$((process * 100 total))
#填充多少个 '#'
  filled=$((process * width total))

# 进度条字符串
  bar=$(printf"%${filled}s" | tr ' ''#')
# 进度条后面的空格
  empty=$(printf"%$((width - filled))s")

# 打印进度条
printf"\r[%-${width}s] %3d%%""$bar$empty""$percent"
}

total=100
for ((i = 1; i <= total; i++));do
  sleep 0.05
  progress_bar "$i""$total"

done

echo -e "\n completed!"


执行效果:


二、脚本解析

(1)printf "%-100s"

意思是左对齐,有100个字符占位符,后面要打印的字符不满100个,就用空格填充



(2)printf "%%" 

两个 %% 表示就是百分号







OK,这就是本期的内容了,下期再见!


文章转载自皮皮克克,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论