Portál AbcLinuxu, 10. května 2025 04:26

Dotaz: [bash] Obor platnosti a while smyčka

30.4.2005 15:53 trancelius | skóre: 22
[bash] Obor platnosti a while smyčka
Přečteno: 298×
Odpovědět | Admin
#! /bin/sh

var=0
while [ $var -lt 3 ]
do
    var=$(expr $var + 1)
    echo -n "."
done
echo
echo $var
smyčka proběhne 3x, po skončení má $var hodnotu 3
#! /bin/sh

var=0
echo -e "1\n2\n3" | while read v
do
    var=${var}$v
    echo $var
done
echo
echo $var

smyčka prolítne taky 3x, vidím jak průběžne roste řetězec $var, ale po skončení má zase hodnotu "0". Jak to udělat, aby byl globální, aby se změny ve smyčce projevily i venku?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.4.2005 16:37 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: [bash] Obor platnosti a while smyčka
Odpovědět | | Sbalit | Link | Blokovat | Admin
V druhém případě se pro to co je za rourou (|) spouští nový shell, takže cokoliv v něm změníš, se nepromítne do rodičovského procesu.
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog
30.4.2005 20:00 trancelius | skóre: 22
Rozbalit Rozbalit vše Re: [bash] Obor platnosti a while smyčka
Takže jak to obejít ?? Jedná se o načítání řádků souboru:
cat "$file" | grep "něco" | while read v
dík :)
30.4.2005 20:15 trancelius | skóre: 22
Rozbalit Rozbalit vše Re: [bash] Obor platnosti a while smyčka
cat "$file" | grep "něco" > soubor
while read v
do
    var=${var}$v
    echo $var
done < soubor
rm soubor
workaround, dík za nasměrování :)
30.4.2005 20:24 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: [bash] Obor platnosti a while smyčka
Gratuluji, stáváš se tento týden vítězem soutěže o nejzbytečnější cat.

Jinak to jde samozřejmě i bez dočasných souborů:
while read; do ...; done < <(grep regexp soubor)
30.4.2005 20:25 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: [bash] Obor platnosti a while smyčka
A jinak doufám, že neimplementuješ v shellu grep -c nebo nl...
30.4.2005 23:31 trancelius | skóre: 22
Rozbalit Rozbalit vše Re: [bash] Obor platnosti a while smyčka
no, snažím se jim co nejvíc vyhýbat ... proč je to tak nebezpečný ?
1.5.2005 08:07 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: [bash] Obor platnosti a while smyčka
Kterou z těch tří věcí, o nichž jsem psal, myslíš?
1.5.2005 09:24 trancelius | skóre: 22
Rozbalit Rozbalit vše Re: [bash] Obor platnosti a while smyčka
všecky ... grep, cat...
1.5.2005 09:40 balki
Rozbalit Rozbalit vše Re: [bash] Obor platnosti a while smyčka
Ten cat je tam vyslovene zbytocny, sluzi na spajanie dvoch suborov, to ze vypisuje nieco na standardny vystup, je len vedlajsi efekt. Meno suboru je vhodnejsie dat ako parameter grepu. Inac, cim menej rur, tym lepsie.
1.5.2005 09:42 balki
Rozbalit Rozbalit vše Re: [bash] Obor platnosti a while smyčka
oprava: sluzi na spajanie suborov, nielen dvoch.
1.5.2005 10:16 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: [bash] Obor platnosti a while smyčka
V tom případě nechápu, na co se ptáš. Nikde jsem nepsal, že grep je nebezepčný.
1.5.2005 10:17 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: [bash] Obor platnosti a while smyčka
Ech, a ještě jsem odpověděl na blbý příspěvek... Patří to k tomuto.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.