倒计时时间bash脚本,不使用while循环中的clear

时间:2012-04-23 06:06:50

标签: bash

谷歌参考了倒计时时间,我正在尝试不同的输出。即显示剩余的秒数:20。每次倒计时达到10时,倒计时为90,80,70,60,50,40,30,30,10。使用clear in 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
    }

1 个答案:

答案 0 :(得分:7)

问题在于它实际上倒计时了9,8,7,6等,但是你从未从10中删除过去的0,所以它会停留在屏幕上。轻松修复:

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

添加一个空格以从屏幕上击中0并且你们都很好。