[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RES: [shell-script] Manipular tempo em shell script
From: |
Julio Cezar Neves - DATAPREVRJ |
Subject: |
RES: [shell-script] Manipular tempo em shell script |
Date: |
Mon, 13 Feb 2006 16:32:14 -0200 |
Olá Priscila,
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:
[ ]s,
Julio
==================================
ENSOL: dias 12, 13 e 14 de maio
na Universidade Federal da Paraíba.
Veja detalhes em http://www.ensol.org.br
http://www.julioneves.com
| -----Mensagem original-----
| De: Priscila [mailto:address@hidden]
| Enviada em: segunda-feira, 13 de fevereiro de 2006 13:50
| Para: address@hidden
| Assunto: [shell-script] Manipular tempo em shell script
|
|
| Algém sabe se é possível manipular horas (somar,subtrair) usando o
| comando date ou algum atifício em shell script?
|
| Exemplo:
|
| Ver quantas horas e minutos faltam da hora atual $(date +%H:%M) até as
| 18:45 (no formato %H:%M necessariamente).
|
| Estou escrevendo um script e é a única coisa que não consegui
| implementar (já procurei no google) .
|
| Obrigada, Priscila.
|
|
|
|
|
|
|
| ---------------------------------------------------------------------
| Esta lista não admite a abordagem de outras liguagens de
| programação, como perl, C etc. Quem insistir em não seguir
| esta regra será moderado sem prévio aviso.
| ---------------------------------------------------------------------
| Sair da lista: address@hidden
| ---------------------------------------------------------------------
| Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil
Links do Yahoo! Grupos
- RES: [shell-script] Manipular tempo em shell script,
Julio Cezar Neves - DATAPREVRJ <=