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

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

Re: [shell-script] Re: Duvida sobre impressao de variavel


From: Julio C. Neves
Subject: Re: [shell-script] Re: Duvida sobre impressao de variavel
Date: Thu, 22 Oct 2009 19:06:22 -0200

Fala Ivan,
qdo vc faz:
cat - | while ....
o bloco inteiro do while roda em um subshell e qdo esse subshell morre,
todos os valores criados ou alterados no seu interior desaparecem com ele.

Experimente fazer:

while ....
...
...
done < <(cat -)

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- Em SP ligue (11) 2125-4747;
- Em DF ligue (61) 3223-3000;
- No RJ ligue (21) 2561-0867;
- Turmas fechadas em outras cidades ligue (21) 8112-9988.


2009/10/22 Ivan lopes <address@hidden>

>
>
> solucao:
>
> primeiro pega-se a entrada
> VETOR=(
> $( cat - )
> )
>
> agora usa-se um for para tratar a entrada
>
> ....
> ;-)
>
> 2009/10/22 Ivan lopes <address@hidden <lopesivan.del%40gmail.com>
> >
>
>
> > Amigos pq do erro??? Seria devido ao final da stream de leitura????
> > A varia'vel VETOR aparece vazia fora do loop e nao imprime nada ....
> >
> > OBS: olhem o uso do 'cat -' seguido de pipe
> >
> >
> > =*= Descricao =*=
> >
> > Problema:
> > Variavel aparece com valor nulo.
> >
> > Minha opinião:
> > Eu acho q isso ocorre devido ao final do pipe ...
> >
> > uso:
> > $ ls *.cpp | ./ex.sh
> >
> > saida desejada:
> > $ ls example_01.cpp example_02.cpp example_03.cpp | ./ex.sh
> > VETOR = example_01.cpp
> > VETOR = example_01.cpp example_02.cpp
> > VETOR = example_01.cpp example_02.cpp example_03.cpp
> > VETOR = example_01.cpp example_02.cpp example_03.cpp
> >
> > saida obtida:
> > $ ls example_01.cpp example_02.cpp example_03.cpp | ./ex.sh
> > VETOR = example_01.cpp
> > VETOR = example_01.cpp example_02.cpp
> > VETOR = example_01.cpp example_02.cpp example_03.cpp
> > VETOR =
> >
> >
> > $ ls *.cpp
> > example_01.cpp example_02.cpp example_03.cpp
> >
> > $ cat ex.sh
> > #!/bin/bash
> >
> > declare -a VETOR
> > i=0
> > cat - | while read LINHA
> > do
> > VETOR[i++]=$LINHA
> > echo VETOR = ${VETOR[*]}
> > done
> > # fora do loop!
> > echo VETOR = ${VETOR[*]}
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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