bash给脚本加进度条_shell脚本实现进度条以及应用场景

使用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

78397b2b25255df5f3d25eef27cc6283.png

bd4c823603c42746befc4a9287932fab.pngshell 脚本实现进度条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

2b88acb6d6254d3234ebd82108368ca3.pngshell 脚本实现进度条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 "正在执行...稍候!"

46e79c4df3a9c4010b71e981026414e4.pngshell 脚本实现进度条3

shell进度条使用场景

进度条可以用到执行比较危险操作的shell脚本中

提示用户 如果不想执行 可在进度条出按ctrl+c结束脚本

因为 在进度条跑的过程中是不会执行下面的代码的

也可以设置执行的任务和进度条代码一起执行

总结

shell脚本实现进度条以及应用场景介绍完了,shell编程进度条不是必须的,但确是能优化体验的。

浏览量:

24

1+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值