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

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

Re: [shell-script] Soma de valores de hora no shell com for


From: Diego Bellin
Subject: Re: [shell-script] Soma de valores de hora no shell com for
Date: Tue, 12 Oct 2010 13:19:13 -0300
User-agent: Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.2.9) Gecko/20100915 Thunderbird/3.1.4

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


        Boa tarde galera,

        Estou criando um script que, dentre outras coisas, soma as horas
existentes em um arquivo. Mesmo trabalho que o mrgraucio
(address@hidden) precisou em 28/04/2010. Só que no meu
caso ainda precisava somar também os segundos.
        A dica do Julio Neves para isso funcionou perfeitamente. Eu apenas fiz
o mesmo procedimento para também somar os segundos. Muito obrigado Julio!

        Só que eu percebi um detalhe: Se a soma do minutos, por exemplo,
resultar num valor abaixo de 10, é mostrado apenas 1 digito para o
minuto. O que não deixa de funcionar de modo algum!!! apenas não é
visualmente 'bonito'.

        Exemplo:

$ cat horas
11:02:01
12:03:05

$ TotSeg=$(cut -f3 -d: horas | paste -sd+ | bc)
$ TotMin=$[$(cut -f2 -d: horas | paste -sd+ | bc)+TotSeg/60]
$ TotHor=$[$(cut -f1 -d: horas | paste -sd+ | bc)+TotMin/60]

$ echo "Total: " $TotHor:$[TotMin%60]:$[TotSeg%60]
Total:  23:5:6

        Para adicionar o segundo dígito, caso o resultado tenha apenas um,
pensei em criar um "if": Se o resultado dos segundos for menor que 10,
adicione o 0 junto ao dígito.
        E o mesmo "if" para os minutos.

        Minha pergunta é: Teria um jeito mais simples de adicionar o 0 (zero)
quando o valor for menor que 10?

        Agradeço desde já,
        Diego


Diego Bellin
Linux Registered User # 298011
LPIC-1 Certified: LPI ID: LPI000121316
                  Verification Code: r23fcwp5gn
SOLIS - O lado livre da tecnologia
http://www.solis.coop.br


Em 29-04-2010 11:43, Julio C. Neves escreveu:
> Sem o for para ser rápido:
> 
> $ cat horas
> 11:59
> 12:48
> 09:11
> 12:44
> 
> $ TotMin=$(cut -f2 -d: horas | paste -sd+ | bc)
> $ TotHor=$[$(cut -f1 -d: horas | paste -sd+ | bc)+TotMin/60]
> 
> Agora a tua saída pode ser:
> $ echo $TotHor:$[TotMin%60]
> 46:42
> 
> Ou:
> $ echo $[TotHor/24] dias e $[TotHor%24]:$[TotMin%60] horas
> 1 dias e 22:42 horas
> 
> Abraços,
> Julio
> Cursos de Shell e Zenity em 2 fins de semana?
> - Aracaju turma de Shell em 12/05 - address@hidden;
> - DF turma de Shell em 12/06 - ligue (61)3223-3000;
> - RJ turma de Shell em 14/06 - ligue (21)2210-6061;
> - Floripa turma de Shell e Zenity 12/07 ? address@hidden;
> - Turmas fechadas em outras cidades ligue (21)8112-9988.
> 
> 
> Em 28 de abril de 2010 23:32, mrgraucio <address@hidden>escreveu:
> 
>>
>>
>> Boa noite galera! Minha primeira mensagem para o grupo, talvez seja algo
>> banal, mas pra mim não foi ehehehe.
>>
>> Me deparei com o seguinte problema, na minha monografia da pós eu precisava
>> medir o tempo total gasto com navegação na internet para entrar em contato
>> com quanto tempo gasto em redes de relacionamento tipo orkut era gasto na
>> empresa. Então, com auxílio do Sarg consegui esses dados, porém, queria
>> fazer um script que automatizasse a tarefa de somar esses dados a partir de
>> um arquivo onde eu relacionei os tempos totais gastos em navegação, tipo:
>>
>> 11:59
>> 12:48
>> 09:11
>> 12:44
>>
>> Totalizando 20 dias úteis de trabalho.
>>
>> Para somar dados de horas utilizei a ferramenta funcoeszz
>>
>> Pensei em utilizar o for, mais ou menos assim
>>
>> for horas in $(cat ~/horas)
>> do
>> funcoeszz hora $horas + $horas
>> done
>>
>> Mas sendo a segunda variável $horas o valor seguinte do arquivo, resultando
>> na soma da primeira hora com a segunda, resultando na soma das duas e
>> fazendo com que o terceiro valor se some no loop com o resultado da soma
>> anterior, como 11:59 + 12:48 = 24:47. Este 24:47 então no loop soma com
>> 09:11, e esse resultado vai ser somado com o 12:44, resultando no valor
>> total de horas. Deu pra entender? :)
>>
>> Já tenho o valor que precisava, porém, ainda vou usar isso algumas vezes
>> mais, TCC é complicado...
>>
>> Alguém tem alguma informação para um leigo no assunto???
>>
>> Forte abraço e parabéns pelo dispêndio de energia com toda essa didática!!!
>> Abraço em especial ao Julio que me deu aula recentemente hahaha!
>>
>>  
>>
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> 
> ------------------------------------
> 
> ---------------------------------------------------------------------
> 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
> 
> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAky0ioEACgkQquMt3P/qwu9NVACghZKfFuKA68Sag6NxlBwUnK2i
WxUAoMvjl23vZbHozBDUZZNHGsLIZZb+
=ylHT
-----END PGP SIGNATURE-----


reply via email to

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