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

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

RES: [shell-script] For


From: Julio Cezar Neves - DISB.O
Subject: RES: [shell-script] For
Date: Fri, 15 Feb 2002 12:17:07 -0300

Fal Rodolfo!
Cheio de ressaca do carnaval, não havia visto a sua colocação e já havia
respondido em msg anterior. Explico então + detalhadamente:

Repare a linha abaixo:
$ echo "$IFS" | hd # para usuario Linux, trocar hd por hexdump
0000    20 09 0a 0a                                         ...
0004

Onde:
IFS = Inter Field Separator (separador entre campos)
20 = Espaço (em hexa)
09 = Tab (idem)
0a = New Line (idem)
isto é, são considerados separadores: o branco, a tab e o new line (o último
0a foi devido ao enter que dei no fim da linha). Desta forma o for "verá" os
campos separados poe estes caracteres. Se vc quizer separar somente pelo new
line, faça:

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

Outra forma seria com o while:

cat arq1 |
while read linha
do
        echo "$linha"
done

ou ainda:

while read linha
do
    echo "$linha"
done < arq1

O segundo while é + eficiente que o 1o, mas menos legível e não é compatível
com versões muito antigas do Unix (system V release 2 ou menor).

[ ]s,
Julio Cezar Neves.
-----Mensagem original-----
De: Rodolfo Villanova_HP [mailto:address@hidden]
Enviada em: quinta-feira, 14 de fevereiro de 2002 14:38
Para: 'address@hidden'
Assunto: RE: [shell-script] For


Que estranho!

Testei a última opção informada

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

e funcionou sobre HP-Ux.

Humm... Infelizmente não tenho um Linux aqui à mão.
Com a palavra, algum dos mestres da lista...
Fala, prof. Julio Neves...

----------------------------------------------------------------------
"If you have an apple and I have an apple and we exchange apples then 
you and I will still each have one apple. But if you have an idea and 
I have one idea and we exchange these ideas, then each of us will have
two ideas."

George Bernard Shaw
----------------------------------------------------------------------


> -----Original Message-----
> From: Shell Script [mailto:address@hidden]
> Sent: quinta-feira, 14 de fevereiro de 2002 15:24
> To: address@hidden
> Subject: [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 



reply via email to

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