Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: Rezorcinol 01 Března 2008, 15:51:26

Název: Viditelnost promenne v BASH skriptu
Přispěvatel: Rezorcinol 01 Března 2008, 15:51:26
Dobry den, narazil jsem na nasledujici problem:

#!/bin/bash

echo -e "1\n2\n3" | while read line
do
echo "while: $line"
a=ahoj
done

echo $a


Posledni echo nevypise hodnotu promenne a, ktera byla inicializovana v tele cyklu while. Muzete mi prosim poradit proc a jak tomu zabranit? Dekuji.
Název: Re: Viditelnost promenne v BASH skriptu
Přispěvatel: Martin 'Želva' Malý 01 Března 2008, 16:39:48
Možná jsem už moc přeprogramovaný v PHP, ale nemá to ahoj být v apostrofech?
Název: Re: Viditelnost promenne v BASH skriptu
Přispěvatel: Pavelp 01 Března 2008, 16:47:55
Jen tuseni, za prikazy v cyklu maji byt stredniky.
Název: Re: Viditelnost promenne v BASH skriptu
Přispěvatel: kkaarreell 01 Března 2008, 17:11:56
sama voda :-)
problem je v te roure. jde o to, ze tou rourou se spusti subshell, cili cely blok while bezi v jinem shellu, tj. je v nem jina promenna "a". Navic v bashi jde hodnoty promennych predavat jen potomkum=subshellum (pomoci export), ne vsak zpet predkum. Takze v tom cyklu while sice ma promenna "a" danou hodnotu, ale po skonceni bloku skonci i shell a promenna zanikne.. proto se to chova, jak se to chova
Název: Re: Viditelnost promenne v BASH skriptu
Přispěvatel: Martin 'Želva' Malý 01 Března 2008, 17:13:51
A nedá se tomu nějak zabránit? Docela mě to zaujalo.
Název: Re: Viditelnost promenne v BASH skriptu
Přispěvatel: kkaarreell 01 Března 2008, 17:43:47
zabranit tezko, je to tak proste udelane.. mozna obejit, ale nenapada me, na co by takove prirazeni mohlo byt uzitecne. a kdyz uz vymyslite nejaky konkretni priklad, urcite bude existovat nejaky mene zvrhly zpusob, jak to udelat.