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

[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]



reply via email to

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