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

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

Re: RES: [shell-script] Perdendo variáveis novamente


From: Leogildo da Silva
Subject: Re: RES: [shell-script] Perdendo variáveis novamente
Date: Fri, 16 Sep 2005 01:21:47 -0000
User-agent: eGroups-EW/0.82

Ae,

Um belo dia quebrei a cabeça para avaliar return code de processos 
remotos executados pelo rsh, onde apliquei algo semelhante à solução 
abaixo:

#---------------------------------------------------------------------
a=1
b=10
c=0
i=1

c=$(seq $a $b | while read addthis;do i=$[ $i + $addthis ]; echo $i; 
done)

echo $c | cut -d" " -f$[ ($b - $a) + 1 ]
#---------------------------------------------------------------------

Como não sei bem o conceito de array no bash, a solução para o 
display ficou no echo + cut.


T+

--- Em address@hidden, Reinaldo Carvalho 
<reinaldoc@g...> escreveu
> Não seria possível usar um export para torna a variavel visível 
para o
> shell depois do subshell ser encerrado?
> 
> Em 14/09/05, Julio Cezar Neves -
> DATAPREVRJ<julio.neves@p...> escreveu:
> > 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:richardbortolucci@g...]
> > | 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
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > ------------------------------------------------------------------
---
> > 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
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> 
> 
> -- 
> Reinaldo Carvalho
> Debian Sarge 3.1 - Linux User: #238310
> Prodepa - rei@p...



reply via email to

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