您的位置:首页 > 运维架构 > Shell

shell实现彩色进度条

2017-07-17 17:11 302 查看
Hello,今天分享的是shell实现彩色进度条。

进度条,通过显示字符所占打印字符的比率,字符的数目的增加,以及长度的变化在显示器上模拟出进度条的变化;

下面代码实现的是渐变色,运行时色度不停会发生变化,主要是参数color的变化,随着i的变化,color=32+i%8

,color也在发生变化,所以进度条的颜色在不断发生变化。

进度条最终停止的颜色与i%8加的这个数有关,与color的最终结果有关,加的数不同,最终颜色不同。

字体颜范围30~39

30:黑 31:红 32:绿 33:黄 34:蓝色 35:紫色 36:深绿 37:白色 38 39亲测貌似和黑色没有多大差别

如果直接设置颜色, 不设置color变量,直接echo -en “\e[30m” 这样把颜色直接设置成一种,打印时就不会出现渐变颜色的进度条,而是特定的颜色。

i=0
str=''
index=0

label=('|' '/' '-' '\\')
while [ $i -le 100 ]
do
let index=i%4
let color=32+i%8
echo -en "\e[1;"$color"m"
printf "[%-100s][%d%%][%c]\r" "$str" "$i" "${label[$index]}"
str='#'$str
sleep 0.1
let i++
done
echo -e "\e[1;m"


下图就是改变加的那个数所得的不同结果:



当然还可以改变底色:

字背景颜色范围40~49

40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色 48 49亲测和上面38 39 没有多大区别,白底黑#打印

代码:

i=0
str=''
index=0

label=('|' '/' '-' '\\')
while [ $i -le 100 ]
do
let index=i%4
echo -en "\e[43m"  //可更改43 为40~49之间的其他数字,改变底色
printf "[%-100s][%d%%][%c]\r" "$str" "$i" "${label[$index]}"
str='#'$str
sleep 0.1
let i++
done
echo -e "\e[1;m"


不同底色运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: