Kam se ztraci promenna?
Vaclav Ovsik
Vaclav.Ovsik na i.cz
Úterý Červenec 10 18:14:56 CEST 2001
On Tue, Jul 10, 2001 at 03:34:27PM +0200, Martin Spirk wrote:
> On Tue 10. July 2001 15:13, you wrote:
> >
> > > cat $soubor | while read a
> >
> > novy proces kopiruje stare prostredi (tedy i drive nastavene promenne)
>
> Ktery proces? Pousti se novy shell? (zkousel jsem si vypisovat $$ a bylo
> stejne uvnitr cyklu i venku)
No kdyz je tam to pipe '|' tak by se pustit mel.
Pravda s tim vypisem jsem ted sam zmaten, to nejak nedovedu objasnit.
Co vlastne presne znamena $$? V bash(1) o tom toho moc neni.
zito na bobek zito $ { eval 'echo $$ 1>&2'; sleep 100; } | { eval 'echo $$ 1>&2'; sleep 120; }
16633
16633
zito na bobek zito $ ps axf
...
16632 ? S 0:01 grxvt -ls
16633 pts/4 S 0:01 \_ -bash
16804 pts/4 S 0:00 \_ -bash
16806 pts/4 S 0:00 | \_ sleep 100
16805 pts/4 S 0:00 \_ -bash
16807 pts/4 S 0:00 \_ sleep 120
...
>
> > > echo konto=$KONTO
> > > done
> >
> > proces se ukonci a promenne v nem nastavene jsou fuc ...
> >
>
> No budiz, ale jak to elegantne vyresit?
> zkousel jsem vysledek cyklu predat pres ``, ale to mi neslo protoze zpetne
> apostrofy uz v tom cyklu jsou a zrejme to nejde vnorit.
A co to napsat bez cat.
soubor=$1
while read a
do
JMENO=`echo $a|cut -f1 -d=`
HODNOTA=`echo $a|cut -f2 -d=`
if [ $JMENO = "account" ]
then
KONTO=$HODNOTA
fi
echo konto=$KONTO
done <$soubor
echo konto=$KONTO
--
Vaclav Ovsik email: Vaclav.Ovsik na i.cz
ICZ a.s. phone: +420 19 7488511
fax: +420 19 7488506
Další informace o konferenci Linux