[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RES: [shell-script] Perdendo variáveis novamente
From: |
Julio Cezar Neves - DATAPREVRJ |
Subject: |
RES: [shell-script] Perdendo variáveis novamente |
Date: |
Wed, 14 Sep 2005 16:54:37 -0300 |
Caro Richard,
o problema não está no loop, mas sim no pipe. É pq cada pipe é executado em
um subshell e no shell as coisas funcionam da seguinte maneira: na criação
de um subshel, as variáveis exportadas do shell pai sõ *copiadas* para cada
subshell. Desta forma, ao fim de cada subshell, os valores de suas variáveis
são perdidos, ficandos os valores que tinham no shell original.
Então respondendo a sua pergunta: para vc não perder os valores de uma
variável alterada no interior de um loop, basta que este loop não seja
acionado por um pipe e existem algumas formas para fazer isso. Por exemplo:
Para trabalhar um arquivo usamos redirecionamento de entrada. Evite:
cat arq | while read linha
...
...
done
Prefira:
while read linha
...
...
done < arq
Para trabalhar comandos, usamos substituição de processos. Evite
ls | while read arq
do
let i++
echo $i $arq
done
echo $i
Prefira:
while read arq
do
let i++
echo $i $arq
done < <(ls)
echo $i
SuShellso,
Julio
:wq
| -----Mensagem original-----
| De: richardbortolucci [mailto:address@hidden]
| Enviada em: quarta-feira, 14 de setembro de 2005 16:37
| Para: address@hidden
| Assunto: [shell-script] Perdendo variáveis novamente
|
|
| Pessoal,
|
| Há pouco tive um problema com variáveis que são zeradas após um loop
| while e agora voltei a encontrar esse problema mas em uma situação
| diferente, com vários loops, etc... bom a dúvida é a seguinte: é
| possível criar variáveis que não se perdem após os loops?
|
| Por exemplo: eu crio a variável antes do loop, atribuo um valor a
| mesma, altero a mesma várias vezes dentro de vários loops (while, for,
| etc) e após todos os loop eu apresento a mesmo variável.
|
| Richard.
|
|
|
|
| ---------------------------------------------------------------------
| 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
- RES: [shell-script] Perdendo variáveis novamente,
Julio Cezar Neves - DATAPREVRJ <=