[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] while não lê sem new_line
From: |
Flavio Torres |
Subject: |
Re: [shell-script] while não lê sem new_line |
Date: |
Mon, 21 Sep 2009 22:06:15 -0300 |
User-agent: |
Thunderbird 2.0.0.23 (Windows/20090812) |
-----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
- --
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.*/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (MingW32)
iEYEARECAAYFAkq4IwcACgkQNRQApncg295YowCg8QSKQ/hjVBoVWlcKG+6RYSDz
2f8Anj6sPg/hzbIRfn1X13PLmNdU4V/B
=5aLz
-----END PGP SIGNATURE-----