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

Strings - Double quotedから\b、エスケープ シーケンスとして認識されるものはありません。ASCIIバックスペース 16 進または 8 進コードを使用できます。

$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

char()バックスペース文字はASCII文字コード8に対応しているため、PHPの関数を使用して出力できます。

元。あなたが次のようなことをした場合:

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

結果の出力は次のとおりです。

Hello, world
于 2013-03-01T12:28:04.033 に答える