【shell实战】使用shell实现一个进度条
        【摘要】     前言 
之前有小伙伴留言说,有没有那种花里胡哨的东西,比如进度条,今天他来了。 
思路 
1. 进度条的组成 
进度条由 五个字符组成: 
主进度条: # 花里胡哨的转圈圈: | \ - / 
#号用于生成进度: 
   
 
| \ - / 这四个用于在百分比后面转圈 
2. 进度条的进度 
一共是100%, 我们按照 每次增加4%的速度往上增加, 即: 0% ,4%...
    
    
    
    前言
之前有小伙伴留言说,有没有那种花里胡哨的东西,比如进度条,今天他来了。
思路
1. 进度条的组成
进度条由 五个字符组成:
主进度条: #
 花里胡哨的转圈圈: | \ - /
#号用于生成进度:

 
 

| \ - / 这四个用于在百分比后面转圈
2. 进度条的进度
一共是100%, 我们按照 每次增加4%的速度往上增加, 即: 0% ,4% 8%,12%,一直到百分百。
 定义i =0 ; $i*4就表示每次增加4
 i 每次增加1 let i++
 每增加4% 我们就打印一个井号。
 
 这张图里: 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]}
  
 - 1
 

 ch[$index] 打印四个符号,每次取值一个,看上去像转圈。
代码源码
#!/bin/bash
i=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%4 sleep 0.1
done
printf "\n"
echo "安装完成"
  
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 
总结
使用shell实现一个进度条的简单版,其实还有很多很好的方案,但对于一个追求完美的人来说,每个方案都有相应的不足。
文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。
原文链接:zmedu.blog.csdn.net/article/details/108734126
        【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
            cloudbbs@huaweicloud.com
        
        
        
        
        
        
        - 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)