Created: 2010-01-31 16:47 | Updated: 2010-01-31 16:47 |
Há alguns dias atrás, precisei criar um pequeno mecanismo de contagem de tempo que me desse a hora inicial, a hora final e o tempo de corrido, em segundos. Eu precisava disso para um treinamento de memorização que exige que façamos uma série de cálculos simples e anotemos o tempo diariamente.
Pensei em usar algo pronto, mas por preguiça de procurar na Internet (é tão difícil procurar no Google, não é mesmo?...) resolvi fazer um pequeno script.
Observe que este script não é tão preciso, pois o seu algoritmo é bastante simples e eu não estava preocupado com precisão: o que eu precisava era algo um pouco mais simples de usar do que o meu velho relógio de pulso analógico (de ponteiros mesmo!).
O script é muito simples de usar: basta executá-lo que a contagem do tempo inicia. Ao terminar sua tarefa, pressione ENTER para que o mesmo se encerre e mostre o resultado: a hora inicial, a hora final e o tempo decorrido.
Depois de terminado, olhei para o script e disse: nossa, que coisa mais simples e achei-o até inútil. No entanto, ele supriu a minha necessidade. Talvez sirva para mais alguém que, como eu, que goste de telinhas de terminal, scripts etc (tem maluco para tudo!).
Eis um exemplo de execução do script:
$ cronometro.sh
Starting counting...
Sun Jan 31 12:24:03 BRST 2010
Press ENTER to stop counting...
Elapsed time: 329s
Elapsed time: 329s
Counting stopped
Sun Jan 31 12:29:32 BRST 2010
------------------------------------------
Start time..: Sun Jan 31 12:24:03 BRST 2010
End time....: Sun Jan 31 12:29:32 BRST 2010
Elapsed time: 329s (5'29")
------------------------------------------
O código fonte é o seguinte:
#!/bin/bash
echo "Starting counting... $(date)"
START=$(date +%s)
END=$(date +%s)
echo "Press ENTER to stop counting..."
DONE=0
while [ "$DONE" == "0" ] ; do
read -t 1 x
if [ "$?" == "0" ] ; then
DONE=1
fi
END=$(date +%s)
let ETIME=${END}-${START}
echo -n -e "
Elapsed time: ${ETIME}s"
done
echo -n -e "
Counting stopped $(date)"
echo
MIN=0
SEC=0
let MIN=${ETIME}/60
let SEC=${ETIME}%60
echo "------------------------------------------"
echo "Start time..: $(date --date @${START}"
echo "End time....: $(date --date @${END})"
echo "Elapsed time: ${ETIME}s (${MIN}'${SEC}")"
echo "------------------------------------------"
Até mais,
Marião