bash for terminator
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Úterý Říjen 24 11:32:49 CEST 2000
On Tue, 24 Oct 2000, Míla Kuchta wrote:
> > Je nejak nutne pouzivat for? Neni lepsi
> > find -print0 | xargs -0
>
> Tady neni kam soupnout podminku.
Musi se to udelat rafinovane:
find ... -print0 | xargs -0 sh -c '
for name in "$@"; do
...
done
' fake-arg0
(ten fake-arg0 je tam schvalne, aby se argumenty od xargs strkaly od $1
a ne od $0...jestli mi nekdo tu anomalii -- totiz, ze "sh -c 'echo
$0' x y" vraci "x" -- vysvetli, budu rad)
> > pripadne
> > find | while read name; do
> > frobnicate $name
> > ...
> > done
Tohle mimochodem take neni odolne proti jmenum s mezerou
resp. tabelatorem (kolem $name nejsou uvozovky) a jeste to muzou zblbnout
jmena s backslashem (melo by se spravne pouzivat read -r).
I kdyz absence -r u read by mozna slo vyuzit k tomu, aby se osetrily ty
konce radek. :)
> Tohle sice jde, ale ja chtel spis vedet, jestli existuje nejaka moznost,
> jak to foru podstrcit.
Jak jiz nekdo zminoval, for by mel pouzivat $IFS, nicmene env. promenne
jsou ceckove stringy, a tudiz se obavam, ze nelze vyjadrit pozadavek, ze
terminatorem ma byt znak '\0'.
--Pavel Kankovsky aka Peak [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."
Další informace o konferenci Linux