这个问题:https://askubuntu.com/questions/16149/overwrite-previous-output-in-bash-instead-of-appending-it
解释如何将倒计时作为bash脚本。我想做同样的事情,但我需要用PHP来做。有没有办法回显退格?
e.g。
echo "Counting down 60\n";
sleep(1);
echo "\b\b\b59\n";
sleep(1);
echo "\b\b\b58\n";
但是,回声“\ b”没有做任何事情。
答案 0 :(得分:9)
从Strings - Double quoted开始,没有\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
。
答案 1 :(得分:5)
退格符对应于ASCII字符代码8,因此您可以使用PHP的char()
函数输出它。
实施例。如果你这样做:
echo 'Hello, world!' . chr(8);
结果输出为:
Hello, world