2016-03-02 57 views
2

我正在尋求清除的替代方法,或者是編寫我製作的定時器腳本的更好方法。本質上,腳本從20分鐘倒數,然後從20分鐘再次重新開始。我想要做的就是避免每次調用清除時發生的終端閃爍,這是每秒一次。我錯過了一個更好的方式來寫這個嗎?或者我基本上堅持清晰和閃爍的終端?定時器顯示腳本沒有清除

totsecs=1200 

currsecs=0 

while true; do 

    currsecs=$(($currsecs+1)) 

    min=$((totsecs-currsecs)) 
    min=$((min/60)) 

    sec=$((totsecs-currsecs)) 
    sec=$((sec%60)) 

    printf "%02d:%02d\n" $min $sec 

    if [ $currsecs -eq $totsecs ]; then 
     currsecs=0 
    fi 

    sleep 1 

    clear 

done  

回答

1

使用回車而不是換行符將光標返回到同一行的開頭。

while true; do 
    ((currsecs++)) 
    ((min = (totsecs - currsecs)/60)) 
    ((sec = (totsecs - currsecs) % 60)) 
    printf "\r%02d:%02d" $min $sec 
    ((currsecs == totsecs)) && currsecs=0 
    sleep 1 
done  
+0

哦,謝天謝地。我的終端感謝你,以及我自己。 – barefly