divne chovani while v ksh a bash na linuxu

Alexandr Malusek malusek na hroch.ujf.cas.cz
Sobota Říjen 9 21:46:14 CEST 1999


bitto na atrey.karlin.mff.cuni.cz (Leos Bitto) writes:

> : BTW, THE MOST FREQUENTLY REPORTED BUG IS
> :         echo hi | read a; echo $a       # Does not print hi
> : I'm aware of this and there is no need to report it.
> : 
> : Specifikaci bashe jsem nestudoval, takze nevim, je-li toto chovani v
> : bashi bug nebo feature.
> 
> Tohle je naprosto klasicky problem. At uz je spravne to nebo to,
> situace je takova ze pulka bourne-shell-like shellu to hi vypise
> a pulka ne. Napriklad bash ho nevypise, ale o to ted vubec nejde. 
> Ponauceni je naprosto jasne: pokud chcete psat scripty, ktere
> maji byt prenositelne, nespolehejte ani na to ani na to a napiste
> to jinak.

Prispevky ctu pouze prilezitostne, takze odpovidam ponekud opozdene.

Souhlasim s tim, ze ma-li byt konstrukce prenositelna mezi ruznymi
shelly vychazejicimi z Bourne shellu, je potreba se omezit na
konstrukce, ktere funguji vsude.

V tomto pripade bych ale vubec nevinil programatora z chyby, ze pouzil
konstrukce specificke pro ksh. Vina je jednoznacne na strane pdksh,
ktere neimplementuje vlastnosti ksh spravne.

Programovani v shellu neni mozne chapat jako loterii - nekde to bude
fungovat, nekde ne. Vyse uvedena konstrukce se pri programovani v ksh
pouziva velmi casto, je pouzita i v rade prikladu v knize "Learning
the Korn Shell", O'Reilly & Associates, Inc. Pokud si dobre vzpominam,
tak HP pouzival (a mozna jeste pouziva) ksh jako shell, ve kterem jsou
psany skripty pro HP-UX. Proste neni to "hracka" u ktere by se
vlastnosti menily ze dne na den.

Otazka je, jaky workaround zvolit. Ja osobne bych se pod Linuxem spis
pokusil pouzit zsh do doby, nez bude opraven pdksh (Puvodni skript mi
pod zsh funguje). Pokud by skript pod zsh fungoval, rozhodne bych ho
nemenil tak, aby byl prenositelny mezi vsemi bourne-like shelly. Podle
me je nesmysl se vzdavat rady velmi dobrych (a dokumentovanych)
vlastnosti ksh.

--
A. Malusek  (malusek na ujf.cas.cz)
UJF AV CR


Další informace o konferenci Linux