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
Sistema de Informações em Rede (NIS)
Como remover senhas de arquivos PDF por linha de comando
Erro: "Possible missing firmware... for module r8169" [Resolvido]
Instalando ou atualizando o plugin Flash no Chromium - Debian/Ubuntu
Segredos do comando sleep
Leitura recomendada
Usando find para expandir listas de arquivos em argumentos de modo seguro
tres - Transação Executivo-operacional em Shell
Receber e-mail quando o root logar via SSH
SHC - Compilando seu shell script
Screenshot usando o terminal
Comentários
Gostei. Vou passar a utilizar daqui pra frente. Muito boa ideia!
Testei o script e não funcionou
Mensagem
Testei o script e não funcionou
Comigo também não funcionou.
Erro: /usr/local/bin/countdown: line 17: nbs: command not found
Mensagem
Comigo também não funcionou.
Erro: /usr/local/bin/countdown: line 17: nbs: command not found
[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.
Mensagem
[quote]
[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[/quote]
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
Enviar