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

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

Re: [shell-script] while não lê sem new_line


From: Denis S. Costa
Subject: Re: [shell-script] while não lê sem new_line
Date: Mon, 5 Oct 2009 03:09:38 -0700 (PDT)

É verdade waldirio, o indice estava errado!!!

eu me preocupei com grandes cois e esqueci dos pequenos detelhes...

mas faça esse mesmo teste com duas palavras em uma linha....

o for pega "por padrão" uma palavra por loop...

mas eu não consegui mudar o IFS (se for isso o método de separação que o for 
usa) pra pegar frases por linha e palavras...

Muito obrigado

Denis Silva Costa
Analista de Geoprocessamento

"A paz não brota em um jardim com câmera e sensores..."

--- Em sáb, 3/10/09, Waldirio Manhães Pinheiro <address@hidden> escreveu:

De: Waldirio Manhães Pinheiro <address@hidden>
Assunto: Re: [shell-script] while não lê sem new_line
Para: address@hidden
Data: Sábado, 3 de Outubro de 2009, 21:55






 




    
                     Ola Denis



Como vi algumas respostas contraditorias, segue:



waldirio@cerberos: ~/cod> cat -vet texto.txt

linha1$

linha2$

linha3waldirio@ cerberos: ~/cod> for b in $(cat texto.txt) ; do echo - $b;

done

- linha1

- linha2

- linha3

waldirio@cerberos: ~/cod>



Com o For funciona perfeitamente



waldirio@cerberos: ~/cod> cat -vet texto.txt

linha1$

linha2$

linha3waldirio@ cerberos: ~/cod> while read line

> do

> echo - $line

> done < texto.txt

- linha1

- linha2

waldirio@cerberos: ~/cod>



Com o while realmente ele nao executa a linha que não tenha o \n ou o fim de

linha.



Ps. No for, em um de seus exemplos, o echo deveria ser no indice (no meu

caso $b) e não no arquivo ...



[]'s

Waldirio



2009/10/3 Denis S. Costa <deniscostadsc@ yahoo.com. br>



>

>

> Me enganei o for tambem não funcionou... ele escreve uma string com quebra

> de linhas e não linhas separadas. Assim:

>

> exemplo tosco:

> cat $texto

> oi1

> oi2

> oi17

>

> for i in texto; do

>   echo "$texto"

>   echo "Thundercats"

> done

>

> oi1

>

> oi2

>

> oi17

> Thundercats

>

> Quando eu queria isso

> oi1

> Thundercats

>

> oi2

> Thundercats

>

> oi17

>

> Thundercats

>

> Muito obrigado pela tentativa...

>

> Denis Silva Costa

> Analista de Geoprocessamento

>

> http://shellscript4 all.blogspot. com

>

> "A paz não brota em um jardim com câmera e sensores..."

>

> --- Em sex, 2/10/09, Denis S. Costa <deniscostadsc@ yahoo.com. 
> br<deniscostadsc% 40yahoo.com. br>>

> escreveu:

>

> De: Denis S. Costa <deniscostadsc@ yahoo.com. br<deniscostadsc% 40yahoo.com. 
> br>

> >

> Assunto: Re: [shell-script] while não lê sem new_line

> Para: shell-script@ yahoogrupos. com.br <shell-script% 40yahoogrupos. com.br>

> Data: Sexta-feira, 2 de Outubro de 2009, 21:04

>

>

>

> Bom desculpe a demora em responder...

>

> A solução com o for funciona perfeitamente! !

>

> a com while não! porque ele faz um loop a mais e gera uma linha em branco e

> como preciso processar as linha dá erro!!

>

> mas muito orbigado pela dica!!!

>

> Um grande abraço!!!

>

> Denis Silva Costa

>

> Analista de Geoprocessamento

>

> http://shellscript4 all.blogspot. com

>

> "A paz não brota em um jardim com câmera e sensores..."

>

> --- Em seg, 21/9/09, Flavio Torres <fla_torres@ yahoo. com.br> escreveu:

>

> De: Flavio Torres <fla_torres@ yahoo. com.br>

>

> Assunto: Re: [shell-script] while não lê sem new_line

>

> Para: shell-script@ yahoogrupos. com.br

>

> Data: Segunda-feira, 21 de Setembro de 2009, 22:16

>

>

>

> -----BEGIN PGP SIGNED MESSAGE-----

>

> Hash: SHA1

>

> Denis S. Costa wrote:

>

> > desculpem a mensagem anterior sem assunto

>

> >

>

> > tenho um programa em shell com uma sintaxe parecida com essa:

>

> >

>

> >

>

> >

>

> > while read linha; do

>

> >

>

> > echo "$linha"

>

> >

>

> > echo ""

>

> >

>

> > done < texto.txt

>

> >

>

> >

>

> >

>

> > Bom, acontece que o texto que uso as vezes não tem quebra de linha na

>

> ultima linha:

>

> >

>

> >

>

> >

>

> > oi, tudo bem? \n

>

> >

>

> > tudo e com você? \n

>

> >

>

> > bem...

>

> >

>

> >

>

> >

>

> > (as duas primeiras linha tem uma quebra de linha e a ultima não!)

>

> >

>

> >

>

> >

>

> > essa linha sem quebra de linha não entra no loop! não lida pelo

>

> while!!! por que?

>

> >

>

> >

>

> Da uma lida na estrutura de loop aqui:

>

> http://asis. epfl.ch/GNU. SYS/bash- 1.14.7/features_ 1.html

>

> Posto aqui duas formas para resolver, deve ter algumas mais que o

>

> pessoal certamente irá postar.

>

> Usando a estrutura do for, o IFS diz que o delimitador (split) é nada,

>

> pode setar qualquer outra coisa diferente de espaço (faça o teste

>

> removendo o IFS que você notará a diferença). Se você tivesse um

>

> arquivo demilitado por ^, então poderia usar o IFS=^, isto faria o seu

>

> read valer os campos passados, ex: read nome sobrenome, sendo que o

>

> arquivo estaria assim: nome^sobrenome.

>

> - --

>

> IFS=""

>

> for i in $(cat texto.txt);do

>

> echo $i

>

> done

>

> - --

>

> usando o ultil

>

> - --

>

> FLAG=false

>

> until $FLAG;do

>

> read || FLAG=true

>

> echo $REPLY

>

> done < texto.txt

>

> - --

>

> Como pode ter visto na estrutura de loop, o ultil trabalhará assim:

>

> enquanto for falso, faça

>

> leia || (ou) se nao ler nada (read non zero) então recebe true para

>

> finalizar o loop

>

> imprime REPLY (variável default quando nao se define nada no while)

>

> end

>

> Um abraço

>

> - --

>

> /*---------- --------- --------- --------- --------- -----*/

>

> /* * Flavio Torres - Administrador de Sistemas*/

>

> /* /_\ */int y,z;main(x){ x=(x>0?-9: x);z=((z= (x+5)

>

> /* o. .o */)>0?z:-z); printf(!x& &++y?"\n" :z?z>y%3+ y/

>

> /* ((Y)) */3?" ":x<-5?"/":" \\":y?"|" :"*");y-9? main(

>

> /* ()) (() */++x):puts( " _|_|_")&&puts( " \\___/");}

>

> /* ()^() A party animal isn't just for Christmas.*/

>

> - ------------ --------- --------- ------

>

> - ------------ --------- --------- --------- --------- --------- -

>

> 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: shell-script- unsubscribe@ yahoogrupos. com.br

>

> - ------------ --------- --------- --------- --------- --------- -

>

> 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.programmi ng.shell. brazil

>

> Links do Yahoo! Grupos

>

> -----BEGIN PGP SIGNATURE--- --

>

> Version: GnuPG v1.4.8 (MingW32)

>

> iEYEARECAAYFAkq4JWc ACgkQNRQApncg297 RBwCdGiV+ UQ+dmhfPzjWSg2Tb Z5Ya

>

> 6UQAn0yRXy50Efx9tWI TSTnMUxvZAeBv

>

> =3i2v

>

> -----END PGP SIGNATURE--- --

>

>

>

>

>

>

>

>

>

>

>

>

>

>

>

> ____________ _________ _________ _________ _________ _________ _

>

> Veja quais são os assuntos do momento no Yahoo! +Buscados

>

> http://br.maisbusca dos.yahoo. com

>

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

>

>

>

>

>

>

>

>

>

>

>

> ____________ _________ _________ _________ _________ _________ _

> Veja quais são os assuntos do momento no Yahoo! +Buscados

> http://br.maisbusca dos.yahoo. com

>

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

>

>  

>



-- 

____________ __

Atenciosamente

Waldirio

msn: waldirio@gmail. com

Site: www.waldirio. com.br

Blog: blog.waldirio. com.br

PGP: www.waldirio. com.br/public. html



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




 

      

    
    
        
         
        
        








        


        
        


      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

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



reply via email to

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