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

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

Re: [shell-script] loop while


From: Celso Vianna
Subject: Re: [shell-script] loop while
Date: Wed, 10 Nov 2004 00:43:37 -0200

Julio,

Mais uma vez obrigado pela dica;.

Ps.: como é que adquiro o seu livro sobre script?

Celso

----- Original Message -----
From: "Julio Cezar Neves - DATAPREVRJ" <address@hidden>
To: <address@hidden>
Sent: Tuesday, November 09, 2004 12:50 PM
Subject: RES: [shell-script] loop while



Fala Celso,
o seu erro está no cmd if. O if não testa condição, testa comandos. Para
testar condições existe o cmd test e então o seu script ficaria assim:

| while read x
| do
|    if test $x = linha2 then
|       varX="mais"
|    fi
|
|    if test $x = linha5 then
|        varY="nada"
|    fi
| done < arq.txt

Desta forma já funciona pq o if estaria testando o cmd test, mas para
alegria geral da nação, este cmd pode ser representado por um par de
"cochetas", ficando assim:

| while read x
| do
|    if [ $x = linha2 ] then
|       varX="mais"
|    fi
|
|    if [ $x = linha5 ] then
|        varY="nada"
|    fi
| done < arq.txt

Que aumenta enormemente a legibilidade. A sintaxe exige que tenha espaços em
brancos entre todos so componentes do test.

[ ]s,
Julio Cezar Neves
- Gerente do Programa de Software Livre -
Tel:+55 21 2528-7070 / +55 21 8112-9988
Fax: +55 21 2528-7646
mailto:address@hidden


| -----Mensagem original-----
| De: Celso Vianna [mailto:address@hidden]
| Enviada em: segunda-feira, 8 de novembro de 2004 22:45
| Para: address@hidden
| Assunto: Re: [shell-script] loop while
|
|
|
| Julio,
|
| E ae, tudo tranquilo? eu fiz assim....
|
| cat arq.txt
| linha1
| linha2
| linha3
| linha4
| linha5
|
| while read x
| do
|    if $x=linha2 then
|       varX="mais"
|    fi
|
|    if $x=linha5 then
|        varY="nada"
|    fi
| done < arq.txt
|
| O problema é que qdo termina o loop as variáveis não tem
| nada; detalhe:
| estou usando FreeBSD/bash
|
| Celso
|
| ----- Original Message -----
| From: "Julio Cezar Neves - DATAPREVRJ"
| <address@hidden>
| To: <address@hidden>
| Sent: Monday, November 08, 2004 11:29 AM
| Subject: RES: [shell-script] loop while
|
|
|
| Celso,
| acho que vc se confundiu um pouco. Existem duas formas de
| fazer o que vc
| quer:
|
| Primeira:
| cat arq.txt | while read x
| do
|    varX=blabla
| done
|
| Segunda:
| while read x
| do
|    varX=blabla
| done < arq.txt
|
| Na primeira, o pipe que redireciona o cat forçará o
| processamento do while
| em um subshell e desta forma qdo o cmd encerrar-se, todos o
| ambiente gerado
| dentro deste subshell estará perdido.
|
| Na segunda, não será criado nenhum subshell e portanto não
| haverá nada a se
| perder. Veja os 2 exemplos abaixo feitos direto no prompt:
|
| Prompt> seq 5 > num
| Prompt> cat num
| 1
| 2
| 3
| 4
| 5
| Prompt> cont=0
| Prompt> cat num | while read x
| > do
| >     let cont++
| > done
| Prompt> echo $cont
| 0
| Prompt> while read x
| > do
| >     let cont++
| > done < num
| Prompt> echo $cont
| 5
|
| [ ]s,
| Julio Cezar Neves
| - Gerente do Programa de Software Livre -
| Tel:+55 21 2528-7070 / +55 21 8112-9988
| Fax: +55 21 2528-7646
| mailto:address@hidden
|
|
| | -----Mensagem original-----
| | De: Celso Vianna [mailto:address@hidden]
| | Enviada em: domingo, 7 de novembro de 2004 21:23
| | Para: address@hidden
| | Assunto: [shell-script] loop while
| |
| |
| |
| | Pessoal,
| |
| | Tenho o seguinte arquivo:
| |
| | cat arq.txt
| |
| | linha1
| | linha2
| | linha3
| | linha4
| | linha5
| |
| | while read x
| | do
| |    varX=blabla
| | done < arq.txt
| |
| | como é que faria para, em cada passagem do loop, atribuir um valor à
| | variável "varX"?
| |
| | Celso
| |
| |
| |
| |
| ---------------------------------------------------------------------
| | 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: address@hidden
| |
| ---------------------------------------------------------------------
| | Esta lista é moderada de acordo com o previsto em
| http://www.listas-discussao.cjb.net
| ---------------------------------------------------------------------
|
| Links do Yahoo! Grupos
|
|
|
|
|
|
|
|
|
| ---------------------------------------------------------------------
| 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: address@hidden
| ---------------------------------------------------------------------
| Esta lista é moderada de acordo com o previsto em
| http://www.listas-discussao.cjb.net
| ---------------------------------------------------------------------
|
| Links do Yahoo! Grupos
|
|
|
|
|
|
|
|
|
|
| ---------------------------------------------------------------------
| 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: address@hidden
| ---------------------------------------------------------------------
| Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------

Links do Yahoo! Grupos









---------------------------------------------------------------------
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: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------

Links do Yahoo! Grupos










reply via email to

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