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

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

Re: [shell-script] como indexar nome de variavel?


From: Alfredo Casanova
Subject: Re: [shell-script] como indexar nome de variavel?
Date: Tue, 30 May 2006 17:35:37 -0300

Entendi... Não sabia do "livro online"... Comprei a 5a e recentemente a 6a
edição, mas não terminei de ler =) O trabalho tá tomando grande parte do meu
tempo, e como administro rede windows, nao tenho como dedicar muito tempo ao
meu querido shell... De qualquer forma, parabens pelo otimo trabalho, tanto
no site quanto nos livros.

E perdão pelo OFF TOPIC, mas o guro merece =)

On 5/30/06, Julio Cezar Neves - DATAPREVRJ <address@hidden>
wrote:
>
> Alfredo,
>
> Vou tentar te explicar legal, mas tem explicação muito melhor em
> www.julioneves.com. Entre nesta página e na caixa de texto no canto
> superior
> esquerdo escreva eval. Isto foi feitopara que meu livro on-line possa ser
> usado como um manual de referência.
>
> Vamos à explicação: para executar uma linha de cmd (então excluindo uma
> atribuição), o shell tem a seguinte ordem de prioridade:
> 1 - Resolução de redirecionamentos;
> 2 - Resolução de variáveis;
> ...
> N - Manda a linha já toda resolvida para execução.
>
> Sem o eval a linha ficaria assim:
>
> echo $ARQUIVO_0$i
>
> No momento de resolução das variáveis, só havia uma definida que era o $i
> (pois a variável $ARQUIVO_0 retorna nulo por não estar definida) e o
> resultado disso seria sempre o valor de $i.
>
> O eval, dá 2 passadas na linha de cmd antes de mandar a linha para
> execução.
> Então qdo fazemos:
>
> eval echo \$ARQUIVO_0$i
>
> na primeira passada ele retira a contrabarra e substitui o valor de $i
> (digamos 1) e na segunda ele resolve o valor da variável $ARQUIVO_01
> (repare
> que o $i já foi substituído pelo seu valor).
>
> Suponha que vc tenha a seguinte execução:
> Prompt> pipe='|'
> Prompt> ls $pipe wc -l
> ls: |: No such file or directory
> ls: wc: No such file or directory
>
> Eu queria substituir a variável $pipe pelo seu valor para fazer um ls e
> contar a qtd de arquivos, mas os redirecionamentos são resolvidos a priori
> e
> neste momento ainda não tinha redirecinamento algum então eu tenho de
> fazer:
>
> Prompt> eval ls $pipe wc -l
>     107
>
>
> Julio Cezar Neves
> Tel:+55 21 2555-6148 / +55 21 8112-9988
> Fax: +55 21 2555-6154
> http://www.julioneves.com
>
>
> | -----Mensagem original-----
> | De: Alfredo Casanova [mailto:address@hidden]
> | Enviada em: terça-feira, 30 de maio de 2006 14:57
> | Para: address@hidden
> | Assunto: Re: [shell-script] como indexar nome de variavel?
> |
> |
> | O que faz o "eval"? Porque não só o ECHO?
> |
> | On 5/30/06, Julio Cezar Neves - DATAPREVRJ
> | <address@hidden>
> | wrote:
> | >
> | > Aê Ricardo,
> | > Prompt> ARQUIVO_01=3
> | > Prompt> ARQUIVO_02=5
> | > Prompt> ARQUIVO_03=9
> | > Prompt> for ((i=1; i<=3; i++))
> | > > {
> | > >     eval echo \$ARQUIVO_0$i;
> | > > }
> | > 3
> | > 5
> | > 9
> | >
> | > [ ]s,
> | > Julio Cezar Neves
> | > Tel:+55 21 2555-6148 / +55 21 8112-9988
> | > Fax: +55 21 2555-6154
> | > http://www.julioneves.com
> | >
> | >
> | > | -----Mensagem original-----
> | > | De: Ricardo Acosta [mailto:address@hidden]
> | > | Enviada em: terça-feira, 30 de maio de 2006 14:12
> | > | Para: address@hidden
> | > | Assunto: Re: [shell-script] como indexar nome de variavel?
> | > |
> | > |
> | > | ai pessoal. nao é exatamente o mesmo probelma anterior!
> | > | é um novo...
> | > | mas acho que não entendi o conceito!
> | > |
> | > | no Script abaixo o que faço para ver a saida
> | > | o valor armazenado nas variáveis:
> | > | ARQUIVO_0[1-3]
> | > |
> | > | olhem o que estou fazendo:
> | > | ........
> | > | acosta@clima:/zdepth2_PDG$ cat plota.gmt.sh
> | > | #!/bin/bash
> | > | ARQUIVO_01="ano_01_sib2dt.dat"
> | > | ARQUIVO_02="ano_02_sib2dt.dat"
> | > | ARQUIVO_03="ano_03_sib2dt.dat"
> | > |
> | > | for i in $(seq 1 3)
> | > | do
> | > | eval ARQUIVO="ARQUIVO_0"$i
> | > | eval echo $ARQUIVO
> | > | done
> | > | acosta@clima:/zdepth2_PDG$./plota.gmt.sh
> | > | ARQUIVO_01
> | > | ARQUIVO_02
> | > | ARQUIVO_03
> | > | ........
> | > |
> | > | > ----- Original Message -----
> | > | > From: "Felipe Kellermann" <address@hidden>
> | > | > To: <address@hidden>
> | > | > Sent: Friday, May 26, 2006 9:53 PM
> | > | > Subject: Re: [shell-script] como indexar nome de variavel?
> | > | >
> | > | >
> | > | > > On Fri, 26 May 2006 6:31pm  -0300, Tiago Barcellos
> | Peczenyj wrote:
> | > | > >
> | > | > >> ->for i in 1 2 3
> | > | > >> do eval "teste_$i=$i"
> | > | > >> echo $teste_$i
> | > | > >> done
> | > | > >>
> | > | > >> 1
> | > | > >> 2
> | > | > >> 3
> | > | > >
> | > | > > Oops. Engano. Parece estar correto mas nao esta. Precisa
> | > | ser eval echo
> | > | > > \$teste_$i. Esta mostrando sempre o valor de $fuu_ e de
> | > | $i. Juntos formam
> | > | > > novamente o 1, 2 e 3.
> | > | > >
> | > | > > --
> | > | > > Felipe Kellermann
> | > | > >
> | > | > >
> | > | > >
> | > |
> | ---------------------------------------------------------------------
> | > | > > 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
> | > | > >
> | > |
> | ---------------------------------------------------------------------
> | > | > > Servidor Newsgroup da lista: news.gmane.org
> | > | > > Grupo: gmane.org.user-groups.programming.shell.brazil
> | > | > >
> | > | > >
> | > | > > Links do Yahoo! Grupos
> | > | > >
> | > | > >
> | > | > >
> | > | > >
> | > | > >
> | > | > >
> | > | > >
> | > | > >
> | > | > >
> | > | >
> | > | >
> | > | >
> | > | > -------------------------------------------------------
> | > | > Esta mensagem foi verificada pelo Anti-Vírus NetUno.
> | > | > NetUno Internet - http://www.netuno.com.br
> | > | >
> | > | >
> | > | >
> | > | >
> | > |
> | ---------------------------------------------------------------------
> | > | > 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
> | > | >
> | > |
> | ---------------------------------------------------------------------
> | > | > Servidor Newsgroup da lista: news.gmane.org
> | > | > Grupo: gmane.org.user-groups.programming.shell.brazil
> | > | >
> | > | >
> | > | > Links do Yahoo! Grupos
> | > | >
> | > | >
> | > | >
> | > | >
> | > | >
> | > | >
> | > | >
> | > | >
> | > | >
> | > |
> | > |
> | > | --
> | > | __________________________
> | > | Ricardo Acosta
> | > | Laboratório de Clima e Biosfera
> | > | Departamento de Ciências Atmosféricas - USP/IAG/ACA
> | > |
> | > |
> | > |
> | ---------------------------------------------------------------------
> | > | 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
> | >
> | ---------------------------------------------------------------------
> | > Servidor Newsgroup da lista: news.gmane.org
> | > Grupo: gmane.org.user-groups.programming.shell.brazil
> | >
> | >
> | > 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
> | >
> | ---------------------------------------------------------------------
> | > Servidor Newsgroup da lista: news.gmane.org
> | > Grupo: gmane.org.user-groups.programming.shell.brazil
> | >
> | >
> | > Links do Yahoo! Grupos
> | >
> | >
> | >
> | >
> | >
> | >
> | >
> | >
> | >
> |
> |
> | --
> | []'s
> | Alfredo Casanova
> | icq: 15793271
> | msn: address@hidden
> | aim: alfredotcasanova
> | yim: atcasanova2
> | tel: +55 61 84137319
> |
> |
> | [As partes desta mensagem que não continham texto foram removidas]
> |
> |
> |
> | ---------------------------------------------------------------------
> | 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
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
>
> 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
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
>


-- 
[]'s
Alfredo Casanova
icq: 15793271
msn: address@hidden
aim: alfredotcasanova
yim: atcasanova2
tel: +55 61 84137319


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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