shell实现彩色进度条

来源:互联网 发布:mac hexo搭建个人博客 编辑:程序博客网 时间:2024/05/17 06:32

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

不同底色运行结果如下:
这里写图片描述

原创粉丝点击