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

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

Re: [shell-script] aritmetica simples - multiplicar e somar variaveis -


From: Cléoson Barreto
Subject: Re: [shell-script] aritmetica simples - multiplicar e somar variaveis - (error token is "09")
Date: Fri, 31 Jul 2009 14:38:10 -0300

Olá!

     Júlio, acho que nesta solução volta a acontecer o problema que tinha
sido falado antes. Quando o minuto for menor que 10 (por exemplo, 1:09) dá
erro na soma. Veja:

$ cat tempo
0:48
1:05
1:10
1:10
1:10
1:17
1:19
1:23
2:09
$ echo $[$[$(cut -f1 -d: tempo|paste -sd+)]*60+$(cut -f2 -d: tempo|paste
-sd+)] minutos
bash: 9*60+48+05+10+10+10+17+19+23+09: valor muito grande para a base (error
token is "09")

     Pra tentar resolver isso, eu coloquei um " | bc" depois do último
"paste -sd+".

$ echo $[$[$(cut -f1 -d: tempo|paste -sd+)]*60+$(cut -f2 -d: tempo|paste
-sd+ | bc)] minutos
691 minutos

-- 
[]'s
Cléoson.
http://farinhadigital.blogspot.com/


2009/7/31 Julio C. Neves <address@hidden>

>
>
> Fala Emmanuel,
> não resisto a um one-liner. :)
>
> $ echo $[$[$(cut -f1 -d: tempo|paste -sd+)]*60+$(cut -f2 -d: tempo|paste
> -sd+)] minutos
> 562 minutos
>
> Abraços,
> Julio
>
>
> 2009/7/31 address@hidden <shell-script%40abdala.org> <
> address@hidden <shell-script%40abdala.org>>
>
> >
> >
> > Saudações aos colegas da lista.
> >
> > Bom, o problema parece bem simples, mas como sou iniciante, já quebrei
> > a cabeça, ja fiz de varias formas,
> > e não tá dando certo.
> >
> > Bom, tenho um arquivo (tempo.txt) com varias linhas no formato
> > hora:minuto ...
> >
> > $ cat tempo
> > 0:48
> > 1:05
> > 1:10
> > 1:10
> > 1:10
> > 1:17
> > 1:19
> > 1:23
> > ... (sao 71 valores)
> >
> > Estou precisando calcular o valor total em minutos :
> >
> > ((hora * 60) + minutos))
> >
> > de cada linha ....
> >
> > Bom a maneira que tentei fazer foi a seguinte:
> >
> > estou usando um cut para separar a hora dos minutos e jogar cada valor
> > em um arquivo separado:
> >
> > cat tempo | cut -f1 -d: > tempo_hora
> >
> > cat tempo | cut -f2 -d: > tempo_minuto
> >
> > em seguida conto o numero de linhas do arquivo tempo:
> >
> > LINHAS=`cat tempo | wc -l`
> >
> > para poder fazer um for ....
> >
> > for i in `seq $LINHAS`
> > do
> > HORA=`awk NR==$i tempo_hora`
> > MINUTO=`awk NR==$i tempo_minuto`
> > TEMPO=$[(HORA*60)+MINUTO]
> > echo $TEMPO >> total_minutos
> > done
> >
> > Segue o script :
> >
> > +++++++++++++++++++++++++++++++++++++
> >
> > #!/bin/bash
> >
> > cat tempo | cut -f1 -d: > tempo_hora
> >
> > cat tempo | cut -f2 -d: > tempo_minuto
> >
> > LINHAS=`cat tempo | wc -l`
> >
> > rm -rf total_minutos
> >
> > for i in `seq $LINHAS`
> > do
> > HORA=`awk NR==$i tempo_hora`
> > MINUTO=`awk NR==$i tempo_minuto`
> > TEMPO=$[(HORA*60)+MINUTO]
> > echo $TEMPO >> total_minutos
> > done
> >
> > +++++++++++++++++++++++++++++++++++++
> >
> > Ele só processa até a linha 56, e dá o erro ....
> >
> > line 15: 09: valor muito grande para a base (error token is "09")
> >
> > so que na linha 56 do arquivo principal "tempo" tem o valor : 1:06:29
> > e na 57 tem: 1:09:17
> >
> > ou seja, aparentemente valores iguais aos outros ....
> >
> > Pode ser um erro básico, mas ja procurei bastante e não to entendendo o
> > que está errado.
> >
> > Muito obrigado a qualquer colega que possa dar uma ajuda;
> >
> > Emmanuel Abdala
> > Anápolis - GO
> >
> >
> >
>
> --
> Abraços,
> Julio
> Cursos de Shell e Zenity?
> - Em SP ligue (11) 2125-4747;
> - Em DF ligue (61) 3223-3000;
> - No RJ ligue (21) 2561-0867;
> - Turmas fechadas em outras cidades ligue (21) 8112-9988.
>
> [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]