实现进度条——基于c语言和shell脚本
今天分享一下基于c语言和shell脚本的进度条的实现以及运行界面。
进度条即计算机在处理任务时,实时的,以图片形式显示处理任务的速度,完成度,剩余未完成任务量的大小,和可能需要处理时间,一般以长方形条状显示。
进度条要求能显示出:处理任务的速度,完成任务的百分比以及用旋转的光标表示任务是否在进行。
基于c语言下的进度条:普通进度条,彩色进度条,以及实现的源代码和运行界面。
普通进度条
源程序:
1 #include<stdio.h>
2
3 int main()
4 {
5 char a[102]={'\0'};//存储进度条进展的字符串
6 a[0]='\0';
7 char b[2]={'+','x'};//旋转光标
8
9 int i=0;
10 while(i<=100)
11 {
12 a[i]='*';
13 printf("%-100s %d%% %c\r", a, i, b[i%2]);//输出不换行
14 fflush(stdout);//刷新缓冲区
15 usleep(20000);
16 ++i;
17 }
18 printf("\n");
19 return 0;
20 }
运行界面:
彩色进度条
源程序:
1 //color2
2 #include<stdio.h>
3
4 int main()
5 {
6 char a[102]={'\0'};//存储进度条进展的字符串
7 a[0]='\0';
8 char b[2]={'+','x'};//旋转光标
9
10 printf("\033[46m");
11 printf("%-108s\r");
12 fflush(stdout);
13 printf("\033[0m");
14
15 int i=0;
16 while(i<=100)
17 {
18 a[i]=' ';
19 printf("\033[45m\033[1m");
20 printf("%s\033[0m %d%% %c \r", a, i, b[i%2]);//输出不换行
21 fflush(stdout);//刷新缓冲区
22 usleep(10000);
23 ++i;
24 }
25 printf("\n");
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\r" "$str" "$i" "${arr[$index]}"
11 str='*'$str
12 ((i++))
13 ((index++))
14 index=$index%4
15 sleep 0.1
16 done
17 printf "\n"
运行界面:
彩色进度条
源程序:
1 #!/bin/bash
2
3 i=1
4 str=''
5 index=0
6 arr=("+" "X" "+" "X")
7 printf "\033[40m\033[1m\033[5m"
8 printf "%100s\r"
9
10 while [ $i -le 100 ]
11 do
12 printf "\033[41m%s\033[0m%d%%%c\r" "$str" "$i" "${arr[$index]}"
13 str=' '$str
14 ((i++))
15 ((index++))
16 index=$index%4
17 sleep 0.1
18 done
19 printf "\n"
运行界面:
分享如上!愿各位学的开心!如有错误,望评论斧正!
ps:关于彩色进度条颜色控制可参考:https://www.iflei.com/linux-terminal-color-progress-bar.html