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
netrw - o explorador de arquivos nativo do Vim
Gmail - Como evitar que emails do VOL sejam bloqueados
Baixando sites recursivamente
GIT - Como recuperar um arquivo deletado no teu repositório
Contador de linhas em consultas SQL
Leitura recomendada
Passagem de parâmetros para funções shell script
Processos rivais
SSH simultâneo para vários servidores
Liberando o acesso a ART NET com iptables
Criando um arquivo .tar auto-instalável
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