Linux shell下文本显示多行进度条方式(利用\r及\033来实现)

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