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
-
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.
-
Možná jsem už moc přeprogramovaný v PHP, ale nemá to ahoj být v apostrofech?
-
Jen tuseni, za prikazy v cyklu maji byt stredniky.
-
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
-
A nedá se tomu nějak zabránit? Docela mě to zaujalo.
-
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.