3

使用 Google 参考倒计时时间 scipt,我正在尝试不同的输出。即显示剩余的秒数:20。每次倒计时达到 10 .. 它倒计时为 90、80、70、60、50、40、30、20、10。在 while 循环中使用 clear 给出了很多示例,但我不想在显示倒计时时间时清除脚本的其他输出。

我想知道我在哪里犯了错误。

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
    }
4

1 回答 1

7

问题是它实际上是在倒计时 9、8、7、6 等,但是你从来没有从 10 中擦除尾随的 0,所以它会留在屏幕上。轻松修复:

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

添加一个空格以从屏幕上敲击 0,一切都很好。

于 2012-04-23T06:15:09.340 回答