shell进度条

shell编写一个进度条

 i=0
 bar=''
 arr=("\\" "|" "/" "-")
 index=0
 for ((i=1 ;i<101 ;i++))
 do
     printf "[%-100s][%d][%c]\r" "$bar" "$i" "${arr[$index]}"
     bar=$bar'#'
     let index=$i%4
     sleep 0.1
 done
 printf "\n"
### 如何在 Shell 脚本中实现进度条显示 为了实现在 Shell 中的进度条显示,可以采用多种方法来创建不同类型的进度条。下面介绍一种简单的方法以及更复杂的多层进度条。 #### 简单彩色进度条 通过使用 ANSI 控制序列改变终端颜色并更新同一行上的输出,能够构建一个直观且视觉上吸引人的进度指示器: ```bash #!/bin/bash i=0 b="" array=('-' '\\' '|' '/') while [ $i -le 100 ]; do let idx=i%4 printf "\e[31m\033[40m[%-100s]\e[32m\033[47m [%d%%] \e[30m \033[47m [%c] \e[0m\r" "$b" "$i" "${array[$idx]}"[^1] b+='#' usleep 200000 let i++ done ``` 这段脚本会打印出带有百分比和旋转字符(如 `-`, `\`, `|`, `/`)的红色背景黑色文字方括号内的绿色填充进度条,并每增加一次循环就向右移动一格直到达到百分之百。 #### 动态任务进度条 对于需要跟踪具体操作进展的情况,则可以通过修改上述基础结构来适应特定需求。例如,在执行某些耗时较长的任务期间展示其完成度变化情况: 当运行名为 `schedule_rotate.sh` 的脚本文件后可以看到如下提示信息:“Finished”,这表明该进程已经结束并且成功地展示了整个过程中的进度状况[^2]。 #### 多层次进度条 如果项目涉及多个阶段或子任务,那么可能还需要考虑设计一个多级联式的进度条界面以便更好地反映整体工作流的状态转换关系。这里给出了一种三层嵌套形式的例子,其中每一层都对应着不同的活动部分;随着各环节逐步推进直至最终全部达成目标——即“安装完成”。 ```bash # 假设这是模拟三个独立但相互关联的过程... for phase in "准备环境" "配置服务" "部署应用"; do echo "[${phase}] 开始..." # 对应于当前处理阶段内部的小步迭代逻辑 for ((j = 0; j <= 100; j += 5)); do sleep .1 bar=$(printf '#%.0s' $(seq 0 $((j / 2)))) spaces=$(printf ' %.0s' $(seq 0 $(((100 - j) / 2)))) printf "[%-${spaces}s][%-60s][%d%%%%] %s\n" \ "" "${bar}" ${j} "$(date)" done echo "[${phase}] 完成." done echo "所有步骤均已完毕!" ``` 此代码片段不仅实现了基本的功能,还加入了时间戳记录功能以帮助调试或日志保存用途。每次进入新的大项之前都会清屏重绘新一层的内容,从而保持清晰易读的效果[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值