[%'={$percentageDone}s>%-{$percetageLeft}s] 是什么意思?

What does [%'={$percentageDone}s>%-{$percetageLeft}s] mean?

我发现我正在使用这个很酷的进度条:

但我不知道它在做什么,我没能google它。

"\r3[0G3[2K[%'={$percentageDone}s>%-{$percetageLeft}s] -   $percentageDone%% - $absoluteDone/$absoluteTotal - avg %.4f - %s",

这就是我正在使用的。

我认为序列是:

* 当我删除代码时,这没有达到我的预期,来源:http://ascii-table.com/ansi-escape-sequences-vt-100.php

那么,这些序列是否提取正确?解释是否正确?还有为什么最后写的很酷吧?

[====>                                       <much more spaces>       ]

要测试的代码:

for ($i = 0; $i <= 100; $i++) {
    $absoluteDone = $i;
    $absoluteTotal = 100;
    $percentageDone = floor(($absoluteDone / $absoluteTotal) * 100);
    $percetageLeft = 100 - $percentageDone;
    $avgTime = 10;
    $setCursorToLineStart = "3[0G";
    $clearLine = "3[2K";
    $progressbarAndStatusInfo = sprintf(
        $setCursorToLineStart
        . $clearLine
        . "[%'={$percentageDone}s>%-{$percetageLeft}s] - $percentageDone%% - $absoluteDone/$absoluteTotal - avg %.4f - %s",
        "",
        "",
        $avgTime,
        gmdate("H:i:s", $avgTime * ($absoluteTotal - $absoluteDone))
    );

    echo $progressbarAndStatusInfo;
    sleep(1);
}

ANSI 转义码在我看来是正确的,但是:

[%'={$percentageDone}s>%-{$percetageLeft}s]

与ansi无关。它通过 sprintf 填充:

'={$percentageDone}

将用 x 个“=”字符填充该行,其中 x 是 $percentageDone 中的值。

有关详细信息,请参阅 sprintf 文档。