shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Cálculo de tempo


From: Julio C. Neves
Subject: Re: [shell-script] Cálculo de tempo
Date: Fri, 1 Oct 2010 17:32:06 -0300

Pesquisei na nossa lista e encontrei esta msg de 2005.

========================================================

isto vai ser útil para a lista. Vou mandar 2 prg para trabalhar com horas

que fiz há muito tempo (ainda para /bin/sh) mas que funcionam bem.

Um deles (hton.sh) transforma um horário na qtd de segundos decorridos desde
00:00:00 o segundo, faz o inverso. Assim para fazer o que vc pediu:

"Ver quantas horas e minutos faltam da hora atual $(date +%H:%M) até as
18:45 (no formato %H:%M necessariamente)."

$ date
Mon Feb 13 14:19:25 BRST 2006
$ ntoh.sh $((`hton.sh 18:45:00` - `hton.sh`))

04:25:35

Isto é, subtrai a qtd de segundos decorridos até as 18:45 da qtd de segundos
decorridos até agora (sem parâmetro, hora atual é o default). Isso tudo é
usado como parâmetro do ntoh.sh que transformará este número em um horário.

se vc quiser no formato %H:%M necessariamente, basta cortar a saída, ficando
assim:

$ ntoh.sh $((`hton.sh 18:45:00` - `hton.sh`)) | cut -f-2 -d :
04:25

=================================>8CorteAqui8<==============================

====

$ cat hton.sh
#!/bin/sh
#
# Sintaxe: hton.sh [ hh:mm:ss | hh mm ss ]
# Recebe um horario e transforma-o na qtd de segundos a partir de 00:00:00
# Caso este horario nao seja informado, a hora atual serah usada como

default
#
if  echo "$*" | egrep
"^(0?[0-9]|1[0-9]|2[0-3]):((0?|[1-5])[0-9]):((0?|[1-5])[0-9])" > /dev/null
then
    hh=`echo $1 | cut -f1 -d:`
    mm=`echo $1 | cut -f2 -d:`
    ss=`echo $1 | cut -f3 -d:`

elif  echo "$*" | egrep "^(0?[0-9]|1[0-9]|2[0-3]) ((0?|[1-5])[0-9])
((0?|[1-5])[0-9])" > /dev/null
then
    hh=$1
    mm=$2
    ss=$3
elif [ $# -eq 0 ]
then
    hh=`date "+%H"`

    mm=`date "+%M"`
    ss=`date "+%S"`
else
    echo "
         Uso: $0  [hh:mm:ss|hh mm ss].  Caso  nao seja informado
              parametro, o horario atual sera usado como default.

" > /dev/tty
    exit 1
fi
echo `expr $hh \* 3600 + $mm \* 60 + $ss`




$ cat ntoh.sh
#!/bin/sh
#
# Uso: ntoh.sh num (num = qtd de segundo a partir de 00:00:00)
#
# Recebe um numero e transforma-o em  um  horario  no  formato

# [d] hh:mm:ss,  indicando  quanto tempo passou  a  partir  de
# 00:00:00. Se hora > 24, d receberah a qtd de dias excedentes
#
if  [ $# -ne 1 ]
then
    echo "
      Uso: $0 num (num = qtd de segundo a partir de 00:00:00)

" > /dev/tty
    exit 1
fi

hh=`expr $1 / 3600`
if  [ $hh -gt 24 ]
then
    a=`expr $hh / 24`
    b=`expr $hh % 24`
    [ $b -lt 10 ] && b=0$b
    hh="$a $b"
else

    [ $hh -lt 10 ] && hh=0$hh
fi
mm=`expr \( $1 % 3600 \) / 60`
ss=`expr $1 % 60`
str=$hh:
for i in $mm $ss
do
    [ $i -lt 10 ] && i=0$i
    str=$str$i:
done

echo $str | cut -f-3 -d:


Em 1 de outubro de 2010 15:22, Allan da Silva Donega
<address@hidden>escreveu:

>
>
> Boa tarde grupo.
>
> Gostaria de saber se alguém tem algum script para fazer cálculo de tempo de
> execução.
>
> Exemplo:
>
> Meu script começa a execução num horário e termina em outro.
>
> Gostaria de um cálculo que fizesse datafim - datainicio
>
> Grato
>
> --
> Allan Donegá
> T - 8721 6764 (pref.)
> V - 7144 5888
> O - 6212 6782
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]