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 10:41:35 -0300

Olá!

     Na solução que fiz, tem um pequeno erro: tem que multiplicar por 60, e
não somar! :-)

     Segue corrigido:

#!/bin/bash

for i in $(cat tempo)
do
echo $(echo $(cut -f1 -d ":" <<< $i) * 60 | bc -l) + $(cut -f2 -d ":" <<<$i)
| bc -l
done

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


2009/7/31 Cléoson Barreto <address@hidden>

> Olá!
>
>      Eu pensei em algo assim:
>
> $ cat tempo
> 0:48
> 1:05
> 1:10
> 1:10
> 1:10
> 1:17
> 1:19
> 1:23
>
> Script:
>
> #!/bin/bash
>
> for i in $(cat tempo)
> do
> echo $(echo $(cut -f1 -d ":" <<< $i)+60 | bc -l) + $(cut -f2 -d ":" <<<$i)
> | bc -l
> done
>
> --
> []'s
> Cléoson.
> http://farinhadigital.blogspot.com/
>
> 2009/7/31 address@hidden <address@hidden>
>
>
>>
>> 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
>> 
>>
>>
>
>


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



reply via email to

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