shell 脚本中我设置了 sleep 50 如何依据 sleep 显示进度条
时间: 2024-12-17 17:38:54 浏览: 6
在Shell脚本中,如果你想在等待`sleep 50`秒的同时显示进度条,可以利用一些技巧结合控制台转义字符。这里有一种常见的做法是通过循环和时间间隔来模拟进度更新。下面是一个简单的示例:
```bash
#!/bin/bash
# 设置总秒数和每秒的输出间隔
total_seconds=50
output_interval=2
# 初始化进度条变量
progress=0
max_progress=$(( total_seconds / output_interval ))
# 使用while循环和time计算睡眠过程
while [[ $(( progress % output_interval )) -eq 0 ]]; do
# 计算当前进度百分比
current_percentage=$(( progress * 100 / max_progress ))
# 渲染进度条到终端
echo -ne "[$(printf '\033[32m%${max_progress}s\033[0m' '' | cut -c1-$current_percentage)] $(echo -n '计时: ') $(date +%H:%M:%S) 完成度: ${current_percentage}%\r"
# 暂停一段时间,然后增加进度
sleep $(( 1 + (output_interval - progress % output_interval) / 100 ))
# 移除行首的回车符,防止下一次迭代打印覆盖上一行
printf "\033[K"
(( progress++ ))
done
# 睡眠结束后,显示完成
echo ""
echo "任务已完成!"
#
阅读全文