O Ksh tem um parâmetro especial SECONDS
, que sempre contém o número de segundos desde a época. A avaliação de $SECONDS
no início e no final do trabalho fornece os horários de início e término e a diferença é o tempo decorrido.
O tempo Unix não leva em conta os segundos bissextos: um dia no tempo Unix é sempre exatamente 84000 segundos. Portanto, a aritmética da hora do dia no tempo Unix é fácil.
start=$SECONDS
…
end=$SECONDS
elapsed=$((end - start))
printf 'Process completed %d:%02d:%02d - Elapsed %d:%02d:%02d\n' \
$((end / 3600)) $((end / 60 % 60)) $((end % 60)) \
$((elapsed / 3600)) $((elapsed / 60 % 60)) $((elapsed % 60))