shell脚本实现多彩进度条

2020-08-20  本文已影响0人  hahand

自己写的小脚本中如果有耗时操作业务,比如网络请求,文件处理,就要考虑一下加入一个进度条来提升体验。

实现一个进度条需要解决的一些技术点:

0 1 2 3 4 5 6 7
black red green yellow blue purple cyan white

同一位置定时顺序打印"|" "/" "-" "\\",其中反斜杠\必须写成\\;同理,进度条百分号%必须写成%%

实现效果1

progress.gif
#!/bin/bash

#隐藏光标
printf "\e[?25l" 

i=0;
str=""
arr=("|" "/" "-" "\\")
while [ $i -le 100 ]
do
  let index=i%4
  let indexcolor=i%8
  let color=30+indexcolor
  #打印进度
  printf "\r\e[0;$color;1m[%-100s][%d%%]%c\e[0m" "$str" "$i" "${arr[$index]}"
  sleep 0.1
  let i++
  str+='='
done

#显示光标
printf "\e[?25h""\n"

实现效果2

white_progress.gif
#!/bin/bash

#隐藏光标
printf "\e[?25l" 

i=0;
str=""
bgcolor=43
space48="                                                "

while [ $i -le 100 ]
do
  percentstr=$(printf "%3s" $i)
  totalstr="${space48}${percentstr}${space48}"
  leadingstr="${totalstr:0:$i+1}"
  trailingstr="${totalstr:$i+1}"
  #打印进度
  printf "\r\e[30;47m${leadingstr}\e[37;40m${trailingstr}\e[0m"
  sleep 0.05
  let i++
  str+="="
done

#显示光标
printf "\e[?25h""\n"

参考文章:

shell脚本实现多彩进度条
shell隐藏显示光标
shell打印颜色

上一篇 下一篇

猜你喜欢

热点阅读