2012-04-23 52 views
3

谷歌參考倒計時時間scipt,我試着不同的輸出。即顯示剩下的秒數:20.每當倒計數達到10時,它倒數爲90,80,70,60,50,40,30,20,10。在while循環中有很多使用clear的示例,但在顯示倒計時時,我不想清除腳本的其他輸出。倒計時時間bash腳本沒有在while循環中使用清除

我想知道我犯的錯誤。

function countdown() 
    { 
     if (($# != 1)) || [[ $1 = *[![:digit:]]* ]]; then 
      echo "Usage: countdown seconds"; 
      return; 
     fi; 
     local t=$1 remaining=$1; 
     SECONDS=0; 
     while sleep .2; do 
      printf '\rseconds remaining to proceed: '"$remaining"; 
      if (((remaining=t-SECONDS) <=0)); then 
       printf '\rseconds remaining to proceed' 0; 
       break; 
      fi; 
     done 
    } 

回答

7

問題是,它實際上是倒計時9,8,7,6等,但你從來沒有擦除從10的尾隨0,所以它留在屏幕上。簡單修正:

printf '\rseconds remaining to proceed: '"$remaining"' '; 

添加一個空格,從屏幕中敲0,你都很好。

+0

:-)感謝好友..瞭解bash腳本。 – Johnbritto 2012-04-23 06:54:17

+0

@Johnbritto:如果您認爲這是您的問題的正確答案,請務必接受答案。 :) – Flimzy 2012-04-23 08:38:10