[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- RES: [shell-script] Eval,
Julio Cezar Neves - DATAPREVRJ <=