10

这个问题:https ://askubuntu.com/questions/16149/overwrite-previous-output-in-bash-instead-of-appending-it

解释如何以 bash 脚本的形式进行倒计时。我想做同样的事情,但我需要用 PHP 来做。有没有办法回显退格?

例如

echo "Counting down 60\n";
sleep(1);
echo "\b\b\b59\n";
sleep(1);
echo "\b\b\b58\n";

但是, echo "\b" 没有做任何事情。

4

2 回答 2

11

字符串 - 双引号,没有\b识别为转义序列。您可以使用ASCII退格十六进制或八进制代码

$bs = "\x08";
echo "Counting down 60";
sleep(1);
echo "$bs$bs59";
sleep(1);
echo "$bs$bs58";

或一直循环到零

$bs = "\x08";
for ($i = 59; $i >= 0; --$i) {
    sleep(1);
    printf("$bs$bs%2d", $i);
}

您也必须省略换行符\n

于 2013-03-01T12:58:48.313 回答
8

退格字符对应 ASCII 字符代码 8,因此您可以使用 PHP 的char()函数将其输出。

前任。如果您执行以下操作:

echo 'Hello, world!' . chr(8);

结果输出是:

Hello, world
于 2013-03-01T12:28:04.033 回答