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