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
Teclas de atalho para navegação entre abas do navegador
Como fazer diff entre duas imagens
Como seu Samsung Galaxy S3 pode se transformar num PC
Comando "date" não acerta a hora no Debian [Resolvido]
netrw - o explorador de arquivos nativo do Vim
Leitura recomendada
Adicionando/Removendo módulos na blacklist através de um script
Criar lançador para o Grafix2
Criando certificados no Fedora Core
FreeBSD - PF + Altq + MRTG
Script para iniciantes esquecidos
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