Strata hodnoty premennej po while v bash-i

Jirka Kosina jikos na jikos.cz
Neděle Červen 13 19:39:28 CEST 2004


On Sun, 13 Jun 2004, Tomáš Janoušek wrote:

> >   POCET=$((POCET+1))
> POCET=$(($POCET+1))

To neni problem na ktery se tazatel ptal. Problem je, ze ta roura do readu 
spusti bohuzel subshell, ze ktereho promennou do parenta samozrejme 
nedostanete.

Takze je nutne si tu promennou 'ven' predat bud nejak pres 
soubor/pojmenovanou rouru, nebo operace s ni delat jeste v aktualnim 
subshellu, tedy neco jako

#!/bin/bash
POCET=0
ls | (while read SUBOR; do
        POCET=$(($POCET+1))
        echo "$POCET $SUBOR"
done; echo $POCET)

-- 
JiKos.


Další informace o konferenci Linux