本文共 2338 字,大约阅读时间需要 7 分钟。
使用shell脚本实现进度条加入到shell脚本当中,可以使shell脚本更好看、美观。
普通进度条
Shell
#!/bin/bash
b=''for ((i=0;$i<=20;i++))
do
let jinshu=$i*5
printf "[%-20s]%d%%\r" $b $jinshu
sleep 0.1
b=#$b
done
echo
1
2
3
4
5
6
7
8
9
#!/bin/bash
b=''for ((i=0;$i<=20;i++))
do
let jinshu=$i*5
printf "[%-20s]%d%%\r" $b$jinshu
sleep 0.1
b=#$b
done
echo
shell 脚本实现进度条1
倍数为5 (jinshu=$i* )$i乘以几倍数就是几
调整倍数后需调整 (“#?”代表要调整的参数)
Shell
((i=0;i<=#?;i++))
printf "[%-#?s]%d%%\r" $b $jinshu
1
2
((i=0;i<=#?;i++))
printf "[%-#?s]%d%%\r" $b$jinshu
带loading和特殊颜色的进度条
Shell
#!/bin/bash
i=0
str=""
label=('|' '/' '-' '\\')
index=0
while [ $i -le 20 ]
do
let index=i%4
let jinshu=$i*5
printf "\e[47m\e[31m[%-20s]\e[0m\e[47;32m[%c]\e[1;0m\e[47;35m[%-3d%%]\e[1;0m\r" $str ${label[$index]} $jinshu
let i++
str+="#"
sleep 0.1
done
echo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
i=0
str=""
label=('|' '/' '-' '\\')
index=0
while [$i-le 20]
do
let index=i%4
let jinshu=$i*5
printf "\e[47m\e[31m[%-20s]\e[0m\e[47;32m[%c]\e[1;0m\e[47;35m[%-3d%%]\e[1;0m\r" $str${label[$index]}$jinshu
let i++
str+="#"
sleep 0.1
done
echo
shell 脚本实现进度条2
label是我们定义的数组,它用来交替显示{“\”,”|”,”/”,”-“} 这四个字符中的一个,由于“\”在Linux中含有特殊含义,所以需要用两个“\”,一个起转义作用。
index用来记录当前进度,从0-100,每次使str=str+”#”,while循环每次输出str,进度,及label中的字符。
以下为常用的颜色代号:
字背景颜色范围: 40--49 字颜色: 30--39
40: 黑 30: 黑
41: 红 31: 红
42: 绿 32: 绿
43: 黄 33: 黄
44: 蓝 34: 蓝
45: 紫 35: 紫
46: 深绿 36: 深绿
47: 白色 37: 白色
1
2
3
4
5
6
7
8
9
字背景颜色范围:40--49字颜色:30--39
40:黑30:黑
41:红31:红
42:绿32:绿
43:黄33:黄
44:蓝34:蓝
45:紫35:紫
46:深绿36:深绿
47:白色37:白色
改变进度形状
Shell
#!/bin/bash
# echo "准备中..."
i=0
str=""
arr=("|" "/" "-" "\\")
while [ $i -le 20 ]
do
let index=i%4
let indexcolor=i%8
let color=30+indexcolor
let NUmbER=$i*5
printf "\e[0;$color;1m[%-20s][%d%%]%c\r" "$str" "$NUmbER" "${arr[$index]}"
sleep 0.1
let i++
str+='+'
done
printf "\n"
# printf "正在执行...稍候!"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
# echo "准备中..."
i=0
str=""
arr=("|" "/" "-" "\\")
while [$i-le 20]
do
let index=i%4
let indexcolor=i%8
let color=30+indexcolor
let NUmbER=$i*5
printf "\e[0;$color;1m[%-20s][%d%%]%c\r" "$str" "$NUmbER" "${arr[$index]}"
sleep 0.1
let i++
str+='+'
done
printf "\n"
# printf "正在执行...稍候!"
shell 脚本实现进度条3
shell进度条使用场景
进度条可以用到执行比较危险操作的shell脚本中
提示用户 如果不想执行 可在进度条出按ctrl+c结束脚本
因为 在进度条跑的过程中是不会执行下面的代码的
也可以设置执行的任务和进度条代码一起执行
总结
shell脚本实现进度条以及应用场景介绍完了,shell编程进度条不是必须的,但确是能优化体验的。
浏览量:
24
1+
转载地址:http://atowx.baihongyu.com/