apenas uma revisão (por favor) [RESOLVIDO]

13. Re: apenas uma revisão (por favor) [RESOLVIDO]

Lincoln Oliveira de Souza
lincolnsol

(usa Fedora)

Enviado em 06/12/2011 - 11:13h

mas para fim de teste eu estou usando um Alta_Floresta_00Z_300-100hpa.txt com apenas 8 linhas



#!/bin/bash

F1()
{
while read linha
do

ano=`echo $linha | awk '{print $1}'`
mes=`echo $linha | awk '{print $2}'`
range=`echo $linha | awk '{print $5}'`
temp=`echo $linha | awk '{print $6}'`

echo $estacao $ano $mes $range $temp

done < "Alta_Floresta_00Z_300-100hpa.txt"
}

cd /home/Lincoln/TESTE/Dados/

while read lista
do
F1
done < Alta_Floresta_00Z_300-100hpa.txt


Alta_Floresta_00Z_300-100hpa.txt

1992 09 26 00Z 300-100 -59.40
1994 06 28 00Z 300-100 -50.95
1994 06 29 00Z 300-100 -54.88
1994 06 30 00Z 300-100 -55.26
1994 07 01 00Z 300-100 -49.35
1994 08 04 00Z 300-100 -54.82
1994 08 05 00Z 300-100 -57.75
1994 08 06 00Z 300-100 -55.91


quando vc executou na sua maquina o codigo era assim ? digo o resto do código, já que a parte F1() foi vc quem fez

eu mudei de maquina e continua em loop infinito ... eu sei q não sou muito bom em shell, na verdade estou me convencendo que sou ruin mesmo, mas assim tá demais, não ser capaz de ver pq um laço entra em loop infinito.







  


14. Re: apenas uma revisão (por favor) [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 06/12/2011 - 11:24h

Amigo, quando você faz


while read lista
do
F1
done < Alta_Floresta_00Z_300-100hpa.txt


ele vai executar a função F1 700 vezes (numero de linhas).... ou seja, no total ele vai ler 490.000 linhas (vai ler as 700 linhas, 700 vezes)

Por diabos você está colocando esse while ai?


15. Re: apenas uma revisão (por favor) [RESOLVIDO]

Lincoln Oliveira de Souza
lincolnsol

(usa Fedora)

Enviado em 06/12/2011 - 11:38h

pq quando eu li sobre o laço while read linha no foca eu havia entendido que seria assim q eu deveria usar

retirei o segundo while e agora eu consegui ver o tamanho do meu erro

abrigado a todos que me ajudaram e ser um pouquinho menos ignorante


16. Re: apenas uma revisão (por favor) [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 06/12/2011 - 11:42h

É assim que vc deve usar mesmo, só que perceba que o colega passou para vc uma função, e depois vc chamou para cada linha do arquivo, essa função.

ENtão:

8 linhas =

8 x 8 = 64, 8 linhas, 8 vezes a função é chamada, e na função 8 vezes o while é executado.

Se vc usar o arquivo original com 700 linhas ;-)

700 x 700 .....


O while funciona da forma como vc entendeu mesmo, mas analise e compreenda que vc chamou uma função dentro de um while, e depois a função trabalha com cada linha do arquivo.

SOLUÇÃO

Tire o while que está em volta da função, ou seja apenas chame a função.

ABraços


17. Re: apenas uma revisão (por favor) [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 06/12/2011 - 12:03h

lincolnsol escreveu:

pq quando eu li sobre o laço while read linha no foca eu havia entendido que seria assim q eu deveria usar

retirei o segundo while e agora eu consegui ver o tamanho do meu erro

abrigado a todos que me ajudaram e ser um pouquinho menos ignorante


Ignorante?! Um ignorante fazendo scripts?! escrevendo códigos bash?! Usando Linux (nada contra os usuário do Windows xD )?! Acha mesmo que alguém ignorante faria tudo isso?!

Cada um tem seu tempo, mas todos estamos aqui aprendendo, todos os dias e é por isso que a vida é interessante, porque não sabemos tudo, mas podemos descobrir se quisermos. Se não tivessemos mais nada a aprender, certamente não estariamos aqui, nem eu, nem você, nem ninguém.

Força na peruca! huauhaha



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts