实现代码:
#########################################################################
# File Name: procbar.sh
# Author: liumin
# mail: 1106863227@qq.com
# Created Time: Sun 02 Jul 2017 09:21:46 AM CST
#########################################################################
#!/bin/bash
num=0
str='#'
max=100
pro=('|' '/' '-' '\')
while [ $num -le $max ]
do
((color=30+num%8))
echo -en "\e[1;"$color"m"
let index=num%4
printf "[%-100s %d%% %c]\r" "$str" "$num" "${pro[$index]}"
let num++
sleep 0.1
str+='#'
done
printf "\n"
echo -e "\e[1;30;m"
进度条的原理在之前的博客有写过: http://blog.csdn.net/qq_35409955/article/details/55505691
这里主要详解进度条颜色设置:
shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e ,-n表示不换行
echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"
注:
1、字背景颜色和文字颜色之间是英文的""
2、文字颜色后面有个m
3、字符串前后可以没有空格,如果有的话,输出也是同样有空格
其中m取值:
30 黑色
31 红色
32 绿色
33 黄色
34 蓝色
35 紫红色
36 青蓝色
37 白色
这里的m值也就是color采用了取模运算, 是为了让进度条八种颜色不断变换达到彩色效果。