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: Fernando Luizao
Subject: Re: [shell-script] Soma de valores de hora no shell com for
Date: Wed, 13 Oct 2010 04:37:04 -0700 (PDT)

Pode usar printf para isso:

$ printf "%02d" 5
=> 05

$ printf "%02d" 46

=> 46


Abraço

--- Em ter, 12/10/10, Diego Bellin <address@hidden> escreveu:

De: Diego Bellin <address@hidden>
Assunto: Re: [shell-script] Soma de valores de hora no shell com for
Para: address@hidden
Data: Terça-feira, 12 de Outubro de 2010, 14:19







 



  


    
      
      
      -----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-----



    
     

    
    


 



  






      

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



reply via email to

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