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

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

RES: [shell-script] Eval


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] Eval
Date: Fri, 10 Dec 2004 10:34:49 -0300

Aê amigo Eliphas,
tem uma saída muito mais elegante (porém muito pouco conhecida) que é
através do uso de named pipes temporários, via substituição de processo
(process substitution), teste isso:

$ while read line
> do
>    let i++  # Com o let não é necessário inicializar a variável (i=0)
>    echo -n $i
> done < <(seq 10)
12345678910$

Então o caso da nossa querida amiga Sulamita (que eu chamo de su + pq é mais
que root, que é simplesmente su - :) poderia ser resolvido assim:

while read line; do
...
done < <(ls)

[ ]s,
Julio 
:wq

| -----Mensagem original-----
| De: Eliphas Levy Theodoro [mailto:address@hidden]
| Enviada em: quinta-feira, 9 de dezembro de 2004 15:12
| Para: address@hidden
| Assunto: Re: [shell-script] Eval
| 
| 
| 
| Sulamita Garcia, @ 07/12/04 - 16:26:
| 
| > Olá
| >
| > Estou tentando montar um script que usa o eval. um pedaço dele é
| > TZN=GMT
| >
| > i=0
| > ls *| while read line; do
| >        let i++
| >        eval $TZN$i=\"$line\"
| > done
| >
| > na linha de comando, sem fazer o while, funciona, eu tenho 
| a variável
| > GMT1 com o conteúdo GMT+1(o ls é dentro do diretorio
| > /usr/share/zoneinfo/Etc ).
| >
| > Porem no script não rola... alguem pode me ajudar?
| 
| Acho que o teu problema é com o while aí. Quando você usa o 
| |while, tudo 
| que é executado ali é fora do contexto do shell primário, 
| então se você 
| criar variáveis ali dentro, elas não vão aparecer fora...
| 
| $ i=0
| $ echo $i
| $ seq 10 | while read line; do let i++; echo -n $i; done
| 12345678910
| $ echo $i
| 0
| $
| 
| Você pode tentar usar um arquivo temporário como input, aí não usa o 
| while:
| 
| ls > /tmp/xxx
| while read line; do
| ...
| done < /tmp/xxx
| 
| Assim, tuas variáveis vão funcionar porque o while está sendo 
| executado 
| no contexto do resto do script.
| 
| Ou seja, se quer usar as variáveis que o while mexe, não faça "| 
| while"...
| 
| -- 
| Eliphas, que já caiu nessa milhões de vezes
| 
| [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
---------------------------------------------------------------------
 
Links do Yahoo! Grupos




 




reply via email to

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