Bash a funkce read ?

Radim Halir halir na utia.cas.cz
Úterý Květen 11 09:03:39 CEST 1999


> : Jak je to s funkci `read' v bashi
> : 
> : echo 11 22 33 > /tmp/aa; read A B C < /tmp/aa; echo $A $B $C
> : > 11 22 33
> : echo 111 222 333 | read A B C ; echo $A $B $C
> : > 11 22 33
> : 
> : to nezere?
> 
> Zapis "neco1 | neco2" znamena ze neco2 se pusti novym shellem. Takze kdyz
> v tom neco2 nactes nejake promenne, jejich zivotnost konci se skoncenim
> prikazu neco2...

To, kdo bude "otec" a kdo "syn" neni IMHO pro rouru definovano a ruzne
UNIX-like OS (HP-UX, SunOS, Solaris, IRIX, DG-UX, Linux) to resi odlisne.
Dokonce se pro delsi kolony se muze stat, ze nektere jejich casti jsou
zpracovavany "zcela externimi" shelly. Tohle se mi napr. stalo na Solarisu
pro kolonu delky asi 6...
Reseni:
 a) uzavirani odpovidajicich prikazu do skupin; tj. napr. misto
    echo 111 222 333 | read A B C ; echo $A $B $C
    pouzit
    echo 111 222 333 | { read A B C ; echo $A $B $C }
 b) "propagovanim promennych do otcu"; napr. (toto je dost umely priklad)
    B=`echo 111 222 333 | { read A B C ; echo $B }`

Sh forever...
Radim


Další informace o konferenci Linux