shell实现彩色进度条

以前用C语言写过一个进度条。具体实现细节http://blog.csdn.net/qq_35524916/article/details/55657147
最近学习shell,就用彩色进度条来练练手。

首先是,基础的进度条基本功能

#!/bin/bash

function bar()
{
    i=0
    bar=""
    lable=('|' '\\' '-' '/')
    whlie [ $i -le 100]
    do
        let index=i%4
        printf "[%-100s][%d%%][%c]\r" "$bar" "$i" "${lable[$index]}"
        bar+='#'
        sleep 0.1
        let i++
    done
    echo ""
}

function main()
{
    bar
}

main

但是,网上有好多的进度条都是炫彩的。如何实现呢?
echo -e 标识转义生效 -n 标识最后不输出换行符, 代码中的echo 只用来控制终端的颜色。
其格式为 echo “\e[1; xm”
其中m的取值为:
30m 黑色
31m 红色
32n 绿色
33m 黄色
34m 蓝色
35m 洋红
36m 青色
37m 白色
代码中用 百分百i 对 8 取模再加30,产生闪烁的效果。

添加之后代码

#!/bin/bash

function bar()
{
    i=0
    bar=""
    lable=('|' '\\' '-' '/')
    whlie [ $i -le 100]
    do
        let index=i%4
        let color=30+i%8   #字体有8种状态30~37
        echo -en "\e[1;"$color"m"  #sleep一次,字体换一次颜色 
        printf "[%-100s][%d%%][%c]\r" "$bar" "$i" "${lable[$index]}"
        bar+='#'
        sleep 0.1
        let i++
    done
    echo "" #效果相当于一个换行
    echo -e "\e[0m" #回复到原来颜色
}

function main()
{
    bar
}

main

结果图:
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值