Skip to main content

moregeek program

【shell实战】使用shell实现一个进度条-多极客编程

前言

之前有小伙伴留言说,有没有那种花里胡哨的东西,比如进度条,今天他来了。

思路

1. 进度条的组成

进度条由 五个字符组成:

主进度条: #
花里胡哨的转圈圈: | \ - /

#号用于生成进度:

【shell实战】使用shell实现一个进度条_shell
【shell实战】使用shell实现一个进度条_shell_02
【shell实战】使用shell实现一个进度条_shell_03

【shell实战】使用shell实现一个进度条_shell_04

| \ - / 这四个用于在百分比后面转圈

2. 进度条的进度

一共是100%, 我们按照 每次增加4%的速度往上增加, 即: 0% ,4% 8%,12%,一直到百分百。
定义i =0 ; $i*4就表示每次增加4
i 每次增加1 let i++
每增加4% 我们就打印一个井号。
【shell实战】使用shell实现一个进度条_shell_05
这张图里: 0%, 4%,8%,12%, 一共打印了4个#号。

3. 花里胡哨的转圈圈

同样的 我们把 | \ - / 定义为一个数组 ch=(’|’ ‘’ ‘-’ ‘/’),取值 ch[0] ,ch[1] ,ch[2]. ch[3]

为了防止出现 ch[5] 超出索引值。 我们让索引值每次都商4, 这样就可以确保不会出现5的索引。
取索引: ch[$index]
如何商4: let index= i%4

4. 需要打印的内容

printf "[%-25s][%d%%][%c]\r" $str $(($i*4)) ${ch[$index]}

【shell实战】使用shell实现一个进度条_shell_06
ch[$index] 打印四个符号,每次取值一个,看上去像转圈。

代码源码

#!/bin/bashi=0
str='#'ch=('|' '\' '-' '/')
index=0
while [ $i -le 25 ]
do
    printf "[%-25s][%d%%][%c]\r" $str $(($i*4)) ${ch[$index]}str+='#'let i++let index=i%4sleep 0.1doneprintf "\n"echo "安装完成"

总结

使用shell实现一个进度条的简单版,其实还有很多很好的方案,但对于一个追求完美的人来说,每个方案都有相应的不足。

©著作权归作者所有:来自51CTO博客作者互联网老辛的原创作品,如需转载,请注明出处,否则将追究法律责任
【shell实战】使用shell实现一个进度条
https://blog.51cto.com/xinsz08/2714499

shell脚本实现系统安全巡检-多极客编程

在使用脚本前需要安装:ag命令安装方式如下:[root@xinsz08-63 LinuxCheck]# yum install epel-release[root@xinsz08-63 LinuxCheck]# yum install the_silver_searcherag的日常使用: ag类似于grep和find,但是执行效率比后两者高ag -g a.txt 查找名字为a.txt的文件 ag

从0开始学习shell--tr工具的使用-多极客编程

tr工具Tr 用于字符转换,替换和删除用法一:命令的执行结果交给tr处理,str1用于查询,str2用于转换处理Command | tr ‘str1’ ‘str2’用法二:tr处理的内容来自文件,< 标准输入Tr ‘str1’ ‘str2’ < filename用法三:匹配文件中的str1进行相应的操作,如删除操作tr option ‘str1’ < filename -d 删除

从0开始学习shell--tr工具的使用-多极客编程

tr工具Tr 用于字符转换,替换和删除用法一:命令的执行结果交给tr处理,str1用于查询,str2用于转换处理Command | tr ‘str1’ ‘str2’用法二:tr处理的内容来自文件,< 标准输入Tr ‘str1’ ‘str2’ < filename用法三:匹配文件中的str1进行相应的操作,如删除操作tr option ‘str1’ < filename -d 删除

【shell】shell脚本实战-while循环语句-多极客编程

前言上文我们讨论了for循环的使用,在有限循环里,我们使用for循环是很方便的一件事情,今天我们来探讨下while循环while循环语句的语法分析语法格式一:while [条件]do 操作done语法格式二:while read linedo 操作done  <  file通过read命令每次读取一行文件,文件内容有多少行,while循环多少次注意:只有表达式为真,do和done之间的语

【shell】shell脚本实战-sed流编辑器-多极客编程

文章目录1. 将 passwd中root替换为zmgaosh2. 按行查找替换1)单行替换:2)多行替换:3)删除2-4行内容4) 添加行5) 在文件最后追加内容6) 在文件的第二行后面追加内容7) 对原文件进行修改 -ised的介绍sed的执行过程sed的用法sed常用选项实战案例总结sed的介绍sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持

基于Shell中if判断的几个常用写法-多极客编程

if, for, while几乎是所有编程语言的关键字,在Shell编程中也不例外,其中if是使用频率最高的,由于Shell编程中不存在对象(Object)的概念,因此在if的比较判断中主要是对字符串、数字的值进行比较判断的:一. if的基本语法if与[之间要有空格[]与判断条件之间也必须有空格]与;之间不能有空格二. 对字符串的判断if [ str1=str2 ];then fi #当两个字符串

【思维进阶】关于职场你有什么要给刚入行的学员讲的-多极客编程

前言这段时间又有学员要毕业,从学校到职场这个跨度很大,很多人不适应,从此就永远告别了这个行业。 在你们毕业之际,有些话需要给你们讲,算作赠言,赠给你的同时,也是我对自己的复盘。原文从刚入职的第一天起,就要确认好社保,公积金,劳动合同,工作居住证或者居住证,人事档案,试用期期限,以及明确公司的绩效考核标准(如果有绩效考核的话) 只有摸透了规则,你才能在一个行业里干的更好。 比如社保交多少年,断交了会

防火墙技术介绍-多极客编程

一、什么是防火墙?百度百科对防火墙做了一个定义: 防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术通俗的说它是一个连接两个或者多个网络区域,并且基于策略限制区域间流量的设备。防火墙技术的主要功能功能在于及时发现并处理计算机网络运行时候可能存在的安全风险,数据输出等问题。这里面也包括处理措施

【DevOps】持续集成环境-Jenkins安装图文版-多极客编程

文章目录1. 环境2. 安装java3. 下载Jenkins4. 安装Jenkins5. 访问测试6. 安装插件7. 创建管理员账号8. 安装完成:前言Jenkins的安装总结前言大家好,我是高胜寒,一个在教培行业不忘初心的人,本文是【循序渐进学运维】DevOps工具篇的第5篇文章-【【DevOps】持续集成环境-Jenkins安装图文版【循序渐进学运维】DevOps工具篇 主要针对的是DevOp

【过关斩将】选择那些能产生复利效应的事情精进自己-多极客编程

文章目录前言什么样的事情有复利效应目前我在做的有哪些复利效应模型坚持下去才有用最后一招前言爱因斯坦把复利效应称为“世界第八大奇迹”,我之前在其他文章中也提到过,如果一个人每个月攒下3000存银行定期,20年后可以攒100W,而且利息每个月都有7000多,相当于在一个三线城市财务自由了。所以如果还年轻,一定要做那些产生复利效应的事情。《股市进阶之道》一书的作者李杰说过一段很精彩的话:学习与不学习的人

【shell】shell脚本实战-for循环-多极客编程

文章目录1. 从命令中取值2. 输出从1到103. 批量用户处理4. ping命令最经典的脚本5. 批量重命名文件前言for循环介绍for循环的语法分析for循环应用举例总结前言循环语句常用于重复执行一条命令或一组命令等,直到达到结束条件后,则终止执行。在Shell中常见的循环命令有while、until、for和select等 今天我们来探讨第一个循环语句,for循环。for循环介绍for循环语

备份-多极客编程

#!/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH LANG=en_US.UTF-8cd ~ setup_path="/www"python_bin=$setup_path/server/panel/pyenv/bin/python cpu_cpunt=$(ca