Substituindo o sleep por um belo cronômetro regressivo

Publicado por Fábio Berbert de Paula em 21/08/2013

[ Hits: 8.508 ]

Blog: https://fabio.automatizando.dev

 


Substituindo o sleep por um belo cronômetro regressivo



Hoje me deu vontade de embelezar meu shell script. O programa faz algumas pausas agendadas com o comando sleep antes de seguir para novas tarefas. O problema, é que o comando sleep simplesmente congela a tela e nunca sabemos quanto tempo falta exatamente para o seu fim.

Pesquisando na Internet, encontrei um belo script de cronômetro regressivo:

function countdown
{
        local OLD_IFS="${IFS}"
        IFS=":"
        local ARR=( $1 )
        local SECONDS=$((  (ARR[0] * 60 * 60) + (ARR[1] * 60) + ARR[2]  ))
        local START=$(date +%s)
        local END=$((START + SECONDS))
        local CUR=$START

        while [[ $CUR -lt $END ]]
        do
                CUR=$(date +%s)
                LEFT=$((END-CUR))

                printf "\r%02d:%02d:%02d" \
                         $((LEFT/3600)) $(( (LEFT/60)%60)) $((LEFT%60))

                sleep 1
        done
        IFS="${OLD_IFS}"
        echo "        "
}

countdown $1

Copie o código acima e salve-o no arquivo /usr/local/bin/countdown. Em seguida, torne-o executável:

sudo chmod a+x /usr/local/bin/countdown

Para executá-lo:

countdown 00:01:00

No exemplo acima, estou chamando a contagem regressiva de 1 minuto. Basta manter o formato hh:mm:ss para construir o tempo de cronometragem desejado.

A partir de agora, ao invocar pausa em meus scripts, ao invés de usar sleep, uso o countdown. Muito mais bonito!

Fonte: Display runnning countdown in a bash script? - The UNIX and Linux Forums

Outras dicas deste autor

Checar a conexão com a Internet em Python

Javascript - pegar um elemento aleatório de uma lista

Python - atualizando todos os módulos com pipdate

online_man - Páginas de manual online no terminal

Escolhendo o modo de inicialização do Netscape

Leitura recomendada

Script para o netfilter (iptables)

Liberando uma máquina para acessar sites bloqueados pelo Squid

GNU parallel - Um ferramenta para execução de processos em paralelo

Script para iniciantes esquecidos

Curso de Shell Script Avançado

  

Comentários
[1] Comentário enviado por eldermarco em 21/08/2013 - 07:28h

Gostei. Vou passar a utilizar daqui pra frente. Muito boa ideia!

[2] Comentário enviado por will_drop em 03/01/2014 - 08:18h

Testei o script e não funcionou

[3] Comentário enviado por WillR10 em 08/01/2016 - 14:15h

Comigo também não funcionou.
Erro: /usr/local/bin/countdown: line 17: nbs: command not found

[4] Comentário enviado por fabio em 08/01/2016 - 14:45h


[3] Comentário enviado por WillR10 em 08/01/2016 - 14:15h

Comigo também não funcionou.
Erro: /usr/local/bin/countdown: line 17: nbs: command not found


Havia um resíduo de código HTML misturado com o código-fonte do script na dica. Corrigido! Pode copiar o código novamente e executar.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts