Awk: ENVIRON - navrat hodnoty do scriptu (opraveno formatovani textu)

Miroslav BENES miroslav_benes na zdas.cz
Pátek Červen 2 06:28:51 CEST 2006


Zdenek Janis napsal(a):

> Jeste jednou dobry vecer,
> Potrebuji z AWK jak vystup na stdout, tak zaroven vratit nejke hodnoty.

...

> echo -e ".." | awk '...' > /tmp/xxxx; echo "$MAX";
>
> a v set $MAX neni :-( a tak by se hodil

Opravte mě někdo jestli se letu, ale IMHO to jít nemůže, protože ta 
proměnná se naplní v jedné kopii shellu, zatímco dotaz na její obsah 
vyřizuje jiná kopie.

Asi by pomohlo nasazení "tee" :


$rm /tmp/xxxx

$echo -e "x = 50\nx = 72\nx = 2" | awk 'BEGIN {M=0;} {X = $3; if (M < X) 
M = $3; print($0);} END {ENVIRON["MAX"] = M; } ' | tee /tmp/xxxx
x = 50
x = 72
x = 2

$cat /tmp/xxxx
x = 50
x = 72
x = 2


Původní kód pro awk jsem nechal beze změny, abych se v tom nemusel 
vrtat. Plnění proměnné MAX je teď zbytečné, ale s tím už si jistě 
poradíte sám :)




Další informace o konferenci Linux