2012-04-23 25 views
3

カウントダウン時間のsciptに関するGoogleの参照で、私は別の出力を試しています。カウントダウンが10に達するたびに、90,80,70,60,50,40,30,20,10とカウントダウンします。 clear in whileループを使用した例がたくさんありますが、カウントダウン時間を表示するときにスクリプトを他の出力からクリアしたくありません。whileループでクリアを使用しないカウントダウン時間bashスクリプト

私はどこでミスをしているのかを知りたいです。

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

+0

@Johnbritto:あなたの質問に正しい答えがあると思ったら、答えを受け入れるようにしてください。 :) – Flimzy

関連する問題