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

將回聲擊:覆蓋先前echo命令

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

是否有可能覆蓋在每次迭代之前的迴盪/印刷行?該程序應回顯1/5,然後2/5而不是1/5,然後3/5等。在程序結束時,只應該留下一行包含5/5的行。

回答

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命令,讓你有時間看這些數字,他們再次更新之前。