Script de cronômetro simples
31/01/2010 - 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 coriddo, 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


Feed RSS
Imprimir
Veja também...