Substituindo o sleep por um belo cronômetro regressivo

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

[ Hits: 8.822 ]

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

OBS - Captura de Tela Tremulante (OBS Flickering) [Resolvido]

Problema de som no Ubuntu - /dev/dsp: Arquivo ou diretório não encontrado

Solução para tamanho da fonte das legendas no Totem

PyCharm no Debian 10 Buster

Recarregar o .vimrc sem sair do Vim

Leitura recomendada

Jogo da Forca em Shell Script

Usando find para expandir listas de arquivos em argumentos de modo seguro

Passagem de parâmetros para funções shell script

Shell script com texto colorido

Autocompletar path no comando read

  

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