实现进度条——基于c语言和shell脚本

实现进度条——基于c语言和shell脚本

今天分享一下基于c语言和shell脚本的进度条的实现以及运行界面。

进度条即计算机在处理任务时,实时的,以图片形式显示处理任务的速度,完成度,剩余未完成任务量的大小,和可能需要处理时间,一般以长方形条状显示。

进度条要求能显示出:处理任务的速度,完成任务的百分比以及用旋转的光标表示任务是否在进行。

基于c语言下的进度条:普通进度条,彩色进度条,以及实现的源代码和运行界面。

普通进度条

源程序:

1 #include<stdio.h>
  2
  3 int main()
  4 {
  5     char a[102]={};//存储进度条进展的字符串
  6     a[0]=;
  7     char b[2]={+,x};//旋转光标
  8
  9     int i=0;
 10     while(i<=100)
 11     {
 12         a[i]=*;
 13         printf("%-100s %d%% %c
", a, i, b[i%2]);//输出不换行
 14         fflush(stdout);//刷新缓冲区
 15         usleep(20000);
 16         ++i;
 17     }
 18     printf("
");
 19     return 0;
 20 }

运行界面:

彩色进度条

源程序:

1 //color2
  2 #include<stdio.h>
  3
  4 int main()
  5 {
  6     char a[102]={};//存储进度条进展的字符串
  7     a[0]=;
  8     char b[2]={+,x};//旋转光标
  9
 10     printf("33[46m");
 11     printf("%-108s
");
 12     fflush(stdout);
 13     printf("33[0m");
 14
 15     int i=0;
 16     while(i<=100)
 17     {
 18         a[i]= ;
 19         printf("33[45m33[1m");
 20         printf("%s33[0m %d%% %c 
", a, i, b[i%2]);//输出不换行
 21         fflush(stdout);//刷新缓冲区
 22         usleep(10000);
 23         ++i;
 24     }
 25     printf("
");
 26     return 0;
 27 }

运行界面:

基于shell脚本下的进度条:普通进度条,彩色进度条,以及实现的源代码和运行界面。

普通进度条

源程序:

1 #!/bin/bash
  2
  3 i=1
  4 str=
  5 index=0
  6 arr=("-" "/" "|" "\")
  7
  8 while [ $i -le 100 ]
  9 do
 10     printf "%-100s%d%%%c
" "$str" "$i" "${arr[$index]}"
 11     str=*$str
 12     ((i++))
 13     ((index++))
 14     index=$index%4
 15     sleep 0.1
 16 done
 17 printf "
"

运行界面:

彩色进度条

源程序:

1 #!/bin/bash
  2
  3 i=1
  4 str=
  5 index=0
  6 arr=("+" "X" "+" "X")
  7 printf "33[40m33[1m33[5m"
  8 printf "%100s
"
  9
 10 while [ $i -le 100 ]
 11 do
 12     printf "33[41m%s33[0m%d%%%c
" "$str" "$i" "${arr[$index]}"
 13     str= $str
 14     ((i++))
 15     ((index++))
 16     index=$index%4
 17     sleep 0.1
 18 done
 19 printf "
"

运行界面:

分享如上!愿各位学的开心!如有错误,望评论斧正!

ps:关于彩色进度条颜色控制可参考:

经验分享 程序员 微信小程序 职场和发展