[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Eval
From: |
Eliphas Levy Theodoro |
Subject: |
Re: [shell-script] Eval |
Date: |
Thu, 9 Dec 2004 15:11:34 -0200 (BRST) |
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]
- Eval, Sulamita Garcia, 2004/12/07