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

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

RES: [shell-script] loop while


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] loop while
Date: Wed, 10 Nov 2004 12:46:15 -0300

Fala Celso,
não precisa agradecer por isso, qto ao livro de shell, os dados são:

Título: Programação Shell Linux
Autor: Julio Cezar Neves
Editora: Brasport
ISBN: 85-7452-164-7

Vc encontra o livro em todas as livrarias técnicas ou pela internet. O
editor me pediu para entregar a 5ª edição pq já está sem livros no estoque,
e assim sendo, pode ser que algumas livrarias já não tenham o produto.

[ ]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: quarta-feira, 10 de novembro de 2004 00:44
| Para: address@hidden
| Assunto: Re: [shell-script] loop while
| 
| 
| 
| 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
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| ---------------------------------------------------------------------
| 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]