You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需额外插件的Bash脚本进度条实现方案及示例

无需额外插件的Bash备份脚本进度条实现

作为脚本编写新手,我希望给自己的Linux备份Bash脚本添加进度条功能,但要求不能让用户安装任何额外插件。我了解pv工具可以实现进度更新,但它需要提前安装,不符合我的需求。请问是否可以实现类似Linux系统更新或安装应用时的那种进度条?

经过尝试,我找到了一个对新手友好的可行方法,只需在输出结束状态消息前添加以下进度条代码(测试场景下可用):

# 进度条
echo -n 'Progress: [--------------------]'
sleep 1     # <- 此处替换为实际执行的命令1
echo -ne '\rProgress: [#####---------------]'
sleep 1     # <- 此处替换为实际执行的命令2
echo -ne '\rProgress: [##########----------]'
sleep 1     # <- 此处替换为实际执行的命令3
echo -ne '\rProgress: [###############-----]'
sleep 1     # <- 此处替换为实际执行的命令4
echo -e '\rProgress: [####################]'

这个方法在测试场景中效果很好,希望能帮助其他有同样需求的人。下面是整合了该进度条逻辑的完整备份脚本(针对tar备份做了适配,让进度条随备份进程更新):

#!/bin/bash

###     标题:          归档备份脚本
###     日期:           2022年7月16日
###     作者:         CJG
###     版本:        1.0.0


# 要备份的文件夹路径(可修改为目标文件夹)
backup_files="/home/"

# 备份目标路径(请勿使用/tmp,否则系统重启后备份文件会被删除)
dest="/tmp"

# 创建记录开始和结束时间的变量
# date命令会在调用now变量时获取当前时间
# %H 格式化显示小时
# %M 格式化显示分钟
# %S 格式化显示秒数

now=$(date +"%H:%M:%S")

# 创建归档文件名
currentDate=$(date +"%y-%m-%d")
hostname=$(hostname -s)
archive_file="$hostname-$currentDate.tgz"

# 提示备份进程启动
echo "正在备份 $backup_files 到 $dest/$archive_file"
echo "进程已启动。"

# 打印开始时间
echo 脚本启动时间: "$now"

# 启动tar备份并放入后台执行
tar -czPf $dest/$archive_file $backup_files &
backup_pid=$!

# 显示进度条
echo -n '备份进度: [--------------------]'

# 循环检测备份进程是否在运行,更新进度条
progress=0
while kill -0 $backup_pid 2>/dev/null; do
    # 根据进度值更新进度条样式
    case $progress in
        0) echo -ne '\r备份进度: [#####---------------]' ;;
        1) echo -ne '\r备份进度: [##########----------]' ;;
        2) echo -ne '\r备份进度: [###############-----]' ;;
        3) echo -ne '\r备份进度: [####################]' ;;
    esac
    progress=$(( (progress + 1) % 4 ))
    sleep 1
done

# 确保进度条显示完成状态
echo -e '\r备份进度: [####################]'

# 打印结束状态消息
echo "备份完成"
now=$(date +"%H:%M:%S")
echo 脚本结束时间: "$now" 

内容的提问来源于stack exchange,提问作者Cege

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:48:21