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

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

Re: [shell-script] For


From: jaugusto
Subject: Re: [shell-script] For
Date: Thu, 14 Feb 2002 19:07:51 -0300

Pessoal.

    Apesar da solução com o while do Marcos Laureano ser muito boa (Garoto
esperto esse!!) provavelmente o problema com um ambiente ou outro não está
baseado em ser linux ou hp-ux. Eu tenho acesso a hp_ux e testei com

for i in $(cat arquivo.txt); do echo "|"$i"|"; done

e funcionou como desejado, processando uma linha de cada vez. Como vi que
outra pessoa também testou no linux e funcionou  venho a supor que o
problema está na variável IFS (Internal Field Separator) utilizada pelo
comando for na separação de seus argumentos de processamento. Em um
ambiente deve possuir um valor e em outro ambiente outro valor.

      Portanto sugiro, só por curiosidade, já que o seu problema já foi
resolvido, teste a seguinte seqüência de comandos. Observar que a linha com
o IFS=" realmente deve ficar em uma linha seguida de um linha com aspas
sozinha em outra linha, pois está se colocando o LF como único caractere
separador de campos para o for. A variável IFSANT é uma variável auxiliar
para somente recuperar o valor atual do IFS depois do processamento do for,
pois mexer com o IFS e não voltar ao seu valor anterior pode causar um
efeito colateral indesejado no restante do script.

IFSANT=$IFS
IFS="
"
for i in $(cat arquivo.txt); do echo "|"$i"|"; done
IFS=$IFSANT

Espero retorno para ver se essa solução resolve o seu problema também

[ ]' s a todos da lista ...

José Augusto Martins Nieviadonski
HSBC Bank Brasil S.A.
Treinamento de Informática



                      
                      
                      
                      
                      
                      
                      


 Enviado Por : Shell Script <address@hidden> - 14/02/02 15:25
        Responder a shell-script

 Para:  address@hidden
 cc:    (cco: Jose NIEVIADONSKI/HBBR/HSBC)
 Assunto: [shell-script] For


Ola pessoal,

estou com o seguinte problema:

tenho um arquivo (arq1), com o seguinte conteúdo:

======================================================
 From ???@??? Mon Jan 15 09:57:46 2001
Return-Path: <address@hidden>
Delivered-To: address@hidden
Received: (qmail 95419 invoked from network); 13 Jan 2001 14:37:24 -0000
Received: from unknown (HELO servudor.teste.com.br) (200.201.202.203)
   by ds.dominio.com.br with SMTP; 13 Jan 2001 14:37:24 -0000
Received: from cruzador ([192.168.8.31])
         by servidor.teste.com.br (8.9.3/8.9.3) with SMTP id LAA23233
         for <address@hidden>; Sat, 13 Jan 2001 11:32:20 -0200
Message-ID: <001301c07d57$36a53f80$address@hidden>
======================================================

Preciso trabalhar com uma linha de cada vez, em sequencia. Utilizando a
linha abaixo:

for i in $(cat arq1); do echo $i; done

a saida e gerada com uma palavra em cada linha.

From
???@???
Mon
Jan
15
09:57:46
2001
Return-Path:
<address@hidden>
Delivered-To:
dominio.com.br-serviçaddress@hidden
Received:
(qmail
95419
...

Se eu executo a linha abaixo:

for i in "$(cat arq1)"; do echo $i; done

ele lista tudo em apenas uma linha continua, sem quebras.


O mesmo ocorre se utilizar a sintaxe abaixo:

for i in "$(cat arq1)"; do echo "$i"; done


Alguem saberia como setar o "separador" que o for utiliza, ao inves de
quebrar com o espaço?


Obrigado!!



--------------------------------------
--------------------------------------
Marcelo Brunner
address@hidden
address@hidden


Sair da lista: address@hidden
Banco Dados:   http://www.egroups.com/group/shell-script

Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html








This message and any attachments are confidential to the ordinary user of
the e-mail address to which it was addressed and may also be privileged. If
you are not the adressee you may not copy, forward, disclose or use any
part of the message or its attachments and if you have received this
message in error, please notify the sender immediately by return e-mail and
delete it from your system.
Internet communications cannot be guaranteed to be secure or error-free as
information could be intercepted, corrupted, lost, arrive late or contain
viruses. The sender therefore does not accept liability for any errors or
omissions in the context of this message which arise as a result of
Internet transmission.



reply via email to

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