Linux shell下文本显示进度条方式(利用\r,以及特殊含义的转义符\033来实现)
# 单个进度条 function ProceessOne(){ spa='' i=0 while [ $i -le 100 ] do printf "我是单个进度条[%-10s] %d%% \r" "$spa" "$i"; sleep 0.5 ((i=i+10)) spa+='#' done # 光标向下移动1行 echo # 光标向下移动0行 #printf "\33[0B"; } # 多个进度条 function ProceessThree(){ spa='' i=0 while [ $i -le 100 ] do printf "我是第一个进度条[%-10s] %d%% \n" "$spa" "$i"; printf "我是第二个进度条[%-10s] %d%% \n" "$spa" "$i"; printf "我是第三个进度条[%-10s] %d%% \n\33[3A" "$spa" "$i"; sleep 0.5 ((i=i+10)) spa+='#' done # 光标向下移动3行 #echo #echo #echo # 光标向下移动3行 printf "\33[3B"; } ProceessOne ProceessThree printf "进度条执行完成";
运行后结果
我是单个进度条[##########] 100% 我是第一个进度条[######### ] 90% 我是第二个进度条[######### ] 90% 我是第三个进度条[######### ] 90% 进度条执行完成
033说明
格式: echo -e “\033[字背景颜色;字体颜色m字符串\033[0m”
例如:
echo -e “\033[41;36m something here \033[0m”
其中41的位置代表底色, 36的位置是代表字的颜色
那些ascii code 是对颜色调用的始末.
\033[XX; m …… \033[0m #XX表示下面的数字
字颜色:30———–37
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色
字背景颜色范围:40—-47
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
字体加亮颜色:90————97
90:黑
91:红
92:绿
93:黄
94:蓝色
95:紫色
96:深绿
97:白色
背景加亮颜色范围:100——————–107
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
===============================================ANSI控制码的说明
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m — \33[37m 设置前景色
\33[40m — \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标
\x1b[2J\x1b[$;1H $表示行位
参考地址:https://www.cnblogs.com/demonxian3/p/8963807.html