在 bash 脚本中,有时您需要用户等待几秒钟以完成后台进程。
我通常使用例如:
sleep 10
Run Code Online (Sandbox Code Playgroud)
如何向脚本添加一种进度条,以便用户知道要等待多长时间?
我安装了命令,bar
但我不明白手册。
rub*_*o77 15
while true;do echo -n .;sleep 1;done &
sleep 10 # or do something else here
kill $!; trap 'kill $!' SIGTERM
echo done
Run Code Online (Sandbox Code Playgroud)
这将启动一个无限的 while 循环,每秒回显一个微调器,在后台执行。
而不是sleep10
命令运行任何你想要的命令。
当该命令完成执行时,这将终止在后台运行的最后一个作业(这是无限的 while 循环)
来源:https : //stackoverflow.com/a/16348366/1069083
您可以改用各种 while 循环,例如像这样的微调器:
while :;do for s in / - \\ \|; do printf "\r$s";sleep 1;done;done
Run Code Online (Sandbox Code Playgroud)
这应该足以让你开始:
#!/bin/bash
for i in {001..100}; do
sleep 1
printf "\r $i"
done
Run Code Online (Sandbox Code Playgroud)
使用\r
转义序列将行返回到开头,没有换行符。这允许您在没有数百行输出的情况下更新输出。通过使用这个基数,你可以找到一种方法来慢慢打印一个箭头,=>25% ==>50% ===>75%
而不是简单地打印一个数字。您可以通过使用 if-then 逻辑根据数字的大小打印出特定数量的 =,以一种非常基本的方式执行此操作。