如何在 Shell 脚本中添加一个简单的进度条

作者:Nawaz Abbasi

有时,我们需要编写交互式的 Shell 脚本,执行这些脚本的用户需要监控进度。 对于这种需求,我们可以实现一个简单的进度条,让用户了解脚本已完成多少任务或已执行多少。

要实现它,我们只需要使用带有以下选项和反斜杠转义字符的 "echo" 命令。

-n : do not append a newline
-e : enable interpretation of backslash escapes
\r : carriage return (go back to the beginning of the line without printing a newline)

为了便于理解,我们将使用 "sleep 2" 命令来表示一个正在进行的任务或 Shell 脚本中的一个步骤。 在实际场景中,这可以是任何事情,例如下载文件、创建备份、验证用户输入等。 此外,为了举例说明,我们假设脚本中只有四个步骤,这就是我们使用 20、40、60、80 (%) 作为进度指示器的原因。 可以根据脚本中的步骤数进行调整。 例如,具有三个步骤的脚本可以用 33、66、99 (%) 表示,或者具有十个步骤的脚本可以用 10-90 (%) 作为进度指示器。

实现方式如下:

echo -ne '>>>                       [20%]\r'
# some task
sleep 2
echo -ne '>>>>>>>                   [40%]\r'
# some task
sleep 2
echo -ne '>>>>>>>>>>>>>>            [60%]\r'
# some task
sleep 2
echo -ne '>>>>>>>>>>>>>>>>>>>>>>>   [80%]\r'
# some task
sleep 2
echo -ne '>>>>>>>>>>>>>>>>>>>>>>>>>>[100%]\r'
echo -ne '\n'

实际上,每次执行 "echo" 命令时,它都会替换终端中前一个 "echo" 命令的输出,从而表示一个简单的进度条。 最后一个 "echo" 命令只是在终端中输入一个换行符 (\n),以便为用户恢复提示符。

执行结果如下:

simple progress bar shell execution

Nawaz 是一位 Linux 命令行爱好者,喜欢分享与命令行和 Shell 脚本相关的技巧和教程。 您可以通过 LinkedIn 与他联系。

加载 Disqus 评论