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://shellscript4all.blogspot.com "A paz não brota em um jardim com câmera e sensores..." --- Em seg, 21/9/09, Flavio Torres <[email protected]> escreveu: De: Flavio Torres <[email protected]> Assunto: Re: [shell-script] while não lê sem new_line Para: [email protected] 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.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]
