Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
倒计时bash脚本,无需在while循环中使用clear_Bash - Fatal编程技术网

倒计时bash脚本,无需在while循环中使用clear

倒计时bash脚本,无需在while循环中使用clear,bash,Bash,有了谷歌的倒数计时scipt参考,我正在尝试一个不同的输出。i、 e显示继续操作的剩余秒数:20。每次倒计时到10点。。它倒计时为90、80、70、60、50、40、30、20、10。在while循环中使用clear给出了很多示例,但是我不想在显示倒计时时清除脚本和其他输出 我想知道我在哪里犯了错误 function countdown () { if (($# != 1)) || [[ $1 = *[![:digit:]]* ]]; then

有了谷歌的倒数计时scipt参考,我正在尝试一个不同的输出。i、 e显示继续操作的剩余秒数: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
    }
函数倒计时()
{ 
如果($#!=1))|[$1=*[![:digit:]*];那么
回显“用法:倒计时秒”;
返回;
fi;
本地t=1美元剩余=1美元;
秒=0;
睡觉的时候
printf'\r要继续的剩余秒数:“$remaining”;

如果(((剩余=t秒)问题是它实际上在倒数9,8,7,6等,但您从未从10中删除尾随的0,因此它保留在屏幕上。简单修复:

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

添加一个空格,在屏幕上划掉0,您就一切正常。

@Johnbritto:如果您觉得答案对您的问题正确,请务必接受答案。:)