小编典典

bash中的进度列

linux

我想在bash操作期间以特定格式显示类似于以下内容的进度条:

[###########](40%)

更新后,它应该成为

[###############](50%)

然后类似地达到 100%

有什么办法可以做到这一点

我编写了以下bash程序,但我不知道如何在同一行中显示百分比:

#!/bin/bash
{
    echo -n "["
    for ((i = 0 ; i <= 100 ; i+=6)); do
        sleep 0.05
        echo -n "###"
    done
    echo -n "]"
    echo
}

假设某个循环中正在执行一定数量的操作,并且在完成每个操作之后,我想报告一些进度。我不想安装pv或默认Ubuntu 12.04安装不附带的任何其他实用程序。


阅读 239

收藏
2020-06-07

共1个答案

小编典典

我们echo -n '...' $'\r'来打印回车符:

for ((k = 0; k <= 10 ; k++))
do
    echo -n "[ "
    for ((i = 0 ; i <= k; i++)); do echo -n "###"; done
    for ((j = i ; j <= 10 ; j++)); do echo -n "   "; done
    v=$((k * 10))
    echo -n " ] "
    echo -n "$v %" $'\r'
    sleep 0.05
done
echo

它使光标移动到行的开头以继续打印。

输出如下,始终在同一行:

[ ##################                ] 50 %

.../...

[ ################################# ] 100 %
2020-06-07