bash: cyklus while a nastaveni promenne

Vladimir Macek macek na sandbox.cz
Středa Srpen 5 11:56:01 CEST 2015


Jde o to, ze znak | zpusobi, ze prikaz za nim je soucasti jineho prostredi,
ktere se zrusi po skonceni toho prikazu.

Pokud mate bash verze >= 4.2, muzete to obejit tim, ze predtim provedete

shopt -s lastpipe

A mimochodem, prikaz "grep soubor.txt" hleda vzor 'soubor.txt' ve
standardnim vstupu.

A toto by taky mohlo stacit pro inkrementaci:

((citac += 1))

Jeste neco, pokud by pozadovana funkcnost pipeline byla opravdu takovato,
tak by se to cele dalo resit jeste jednoduseji a efektivneji.

VM

On 5.8.2015 11:28, "Zdeněk Kaminski" wrote:
> Dobry den,
>
>  po dlouhe dobe jdu neco psat v bashi a vim, ze konstrukce typu:
>
> citac=0
> grep soubor.txt | while read vzor1 vzor2 vzor3; do
>    citac=$(($citac + 1 ))
>    echo $citac
> done
> echo $citac
>
> mi na uplnem konci vypise 0.
>
> Ja vsak potrebuji hodnotu promenne citac nastavenou v cyklu zachovat. A uz
> si nevzpominam, jak to inteligentne udelat. A ukladat si ji po kazdem
> pruchodu do souboru a potom ji z nej precit mi prijde uchylne.
>
> Nakopnete me prosim? Dival jsem se i do manualove stranky bashe, ale bud
> jsem slepy, nebo nevidim :-(
>
> Diiiky.



Další informace o konferenci Linux