进度条实现

来源:互联网 发布:多益网络校园招聘2018 编辑:程序博客网 时间:2024/05/17 04:43

本片文章介绍进度条shell c的实现代码

Shell脚本实现

#!/bin/bashi=0str=""arr=("|" "/" "-" "\\")color=("30" "31" "34" "37")while [ $i -le 100 ]do    let index=i%4    printf "\033[1;%dm[%-100s][%d%%]\033[1;4;%dm%c\033[0m\r" "${color[index]}" "$str" "$i" "${color[index]}" "${arr[index]}"    usleep 100000    let i++    str+='#'doneprintf "\n"

此段代码中注意\转义字符的使用
\033[1;%dm[%-100s][%d%%]\033[1;4;%dm%c\033[0m\r
此段代码做颜色输出使用,以下做此段代码的分析

   \033[1;%dm[%-100s]  此段表示将输出结果设置为高亮度(\033[1),然后以对应%dm的颜色进行输出,[%-100s]为输出内容(包括中括号);  [%d%%]输出百分比;  \033[1;4%dm%c 如第一段所述;  \033[0m\r 此段表示恢复属性为默认值,也就是说0m设置项用于恢复默认值。现在你的终端是不是又一切正常了?

如需了解更多关于颜色配置问题,可查看颜色配置文档

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

以下为c语言实现版本:

#include<stdio.h>#include<stdlib.h>void bar(){    char *arr = "|/-\\";    int index = 0;    char bar[102] = {0};    int i;    for(i = 0;i<=100;i++)    {        printf("[%-100s][%d%%] [%c]\r",bar,i,arr[index]);        index = i%4;        bar[i] = '#';        fflush(stdout);        usleep(9500);    }    printf("\n");}int main(){    bar();    return 0;}
原创粉丝点击