Céoson, isso ocorre pq não testei e, como o número começa por zero, ele acha que é um octal e passa a dar erro em 08 e 09.
Para usar o bc, proponho a seguinte sintaxe: bc <<< $(cut -f1 -d: tempo | paste -sd+)*60+$(cut -f2 -d: tempo | paste -sd+) -- 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. 2009/7/31 Cléoson Barreto <[email protected]> > > > 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 <[email protected] <julio.neves%40gmail.com>> > > > > > > > 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 [email protected] <shell-script%40abdala.org><shell-script% > 40abdala.org> < > > [email protected] <shell-script%40abdala.org> <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] > > > [As partes desta mensagem que não continham texto foram removidas]
