如何在 Shell 脚本中添加一个简单的进度条
发布于 2020年10月26日
有时,我们需要编写交互式的 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),以便为用户恢复提示符。
执行结果如下: