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

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

Re: [shell-script] Valor perdido ao sair de loop


From: Julio C. Neves
Subject: Re: [shell-script] Valor perdido ao sair de loop
Date: Thu, 14 Sep 2006 18:33:03 -0300

Fala Geilson
antes de mais nada queria agrader à indicação do meu livro. Em segundo
lugar, esplicar que na resposta do Tiago: < <(cmd), somente o primeiro < é
um redirecionamento. O <(cmd) é um named pipe temporário. Vc pode confirmar
isso da seguinte forma:

Prompt> ls -l >(cat)
l-wx------    1 d276707  ssup           64 Sep 14 17:38 /dev/fd/63 ->
pipe:[175085]

Veja maiores detalhes em www.julioneves.com e lá procure Substituição de
Processos.
-- 
Abraços,
Julio
http://www.julioneves.com - Um livro sobre Bash completo e on-line
:wq

Em 14/09/06, Geison Farias <address@hidden> escreveu:
>
>
> Puxa, valeu Tiago.
>
> Havia tentado outras formas de redirecionamento mas não esta: "< <( xxx
> )".
> Desconfiava do sub-shell...
>
> Brigadão.
> Geison
>
>
>
> Tiago Barcellos Peczenyj escreveu:
> > quando vc faz
> >
> > echo "alguma coisa" | while read A ; do ... ; done
> >
> > a parte que lida com a variavel A é executada em um sub-Shell. Ao
> > alterar uma variavel em um subshell vc não tem como fazer o valor
> > voltar, pois não existe uma referência entre os shells.
> >
> > Faça assim:
> >
> > #!/bin/bash
> > A="..."
> >
> > JUNTA=
> > CAMPOS=
> >
> > while read LINHA ; do
> >    C1=${LINHA:2:3}
> >    C2=${LINHA:6:3}
> >    C3=${LINHA:8:3}
> >    C4=${LINHA:14:3}
> >
> >    CAMPOS="${C1}${C2}${C3}${C4}---"
> >
> >    JUNTA=${JUNTA}${CAMPOS}
> >
> > done < <(echo "$A"| grep "^9........j")
> >
> > echo "${JUNTA}"
> >
> > pois o redirecionamento '<' é mais 'confiavel' para o que vc quer ;-)
> >
>

-- 
Abraços,
Julio
http://www.julioneves.com - Um livro sobre Bash completo e on-line
:wq


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



reply via email to

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