2016-08-30 6 views
-1
for i in {1..5};do 
    echo $i/5 
done 

がエコーされますバッシュ:上書き前のエコーコマンド

1/5 
2/5 
3/5 
4/5 
5/5 

それはすべての繰り返しで、前のエコー/印刷ラインを上書きすることは可能ですか?プログラムは1/5を返し、1/5の代わりに2/5を返し、次に3/5などを返す必要があります。プログラムの最後には、5/5を含む1行だけを残す必要があります。

答えて

2

これは、キャリッジリターン\rを使用して達成することができます。

for i in {1..5}; do 
    printf "%d/5\r" "$i" 
    sleep 1 
done 

あなたは、端末の更新を見ることができるように、私はsleepへの呼び出しを追加しました。

端末が出力を上書きしないように、最後に改行を印刷する必要があることに注意してください。

2

行を上書きするには、キャリッジリターン\rを使用し、改行を使用しないでください。

は、例えば、試してみてください。彼らは再び更新する前に、あなたは数字を時間を見てきたように、

for i in {1..5}; do printf '\r%s/5' $i; sleep 0.1; done 

sleepコマンドが追加されました。

関連する問題