Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Viditelnost promenne v BASH skriptu  (Přečteno 2207 krát)

Rezorcinol

  • Návštěvník
  • Příspěvků: 63
Viditelnost promenne v BASH skriptu
« kdy: 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.

Martin 'Želva' Malý

  • Závislák
  • ***
  • Příspěvků: 2438
  • Zalezlej v krunýři
    • Želvův zápisník
Re: Viditelnost promenne v BASH skriptu
« Odpověď #1 kdy: 01 Března 2008, 16:39:48 »
Možná jsem už moc přeprogramovaný v PHP, ale nemá to ahoj být v apostrofech?
Osobní počítače jsou nanic a opravdu nikdy nedělají to, co se po nich chce. Fakt. I když na něm třeba běží Debian, Ubuntu, Arch, Widle, Mac, je to skoro furt to samé... :-(

Pokud mi dáváte zápornou karmu, budu rád, když mi napíšete proč, abych aspoň věděl, jak jsem vám uškodil. ;-)

Pavelp

  • Host
Re: Viditelnost promenne v BASH skriptu
« Odpověď #2 kdy: 01 Března 2008, 16:47:55 »
Jen tuseni, za prikazy v cyklu maji byt stredniky.

kkaarreell

  • Stálý člen
  • **
  • Příspěvků: 1072
Re: Viditelnost promenne v BASH skriptu
« Odpověď #3 kdy: 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

Martin 'Želva' Malý

  • Závislák
  • ***
  • Příspěvků: 2438
  • Zalezlej v krunýři
    • Želvův zápisník
Re: Viditelnost promenne v BASH skriptu
« Odpověď #4 kdy: 01 Března 2008, 17:13:51 »
A nedá se tomu nějak zabránit? Docela mě to zaujalo.
Osobní počítače jsou nanic a opravdu nikdy nedělají to, co se po nich chce. Fakt. I když na něm třeba běží Debian, Ubuntu, Arch, Widle, Mac, je to skoro furt to samé... :-(

Pokud mi dáváte zápornou karmu, budu rád, když mi napíšete proč, abych aspoň věděl, jak jsem vám uškodil. ;-)

kkaarreell

  • Stálý člen
  • **
  • Příspěvků: 1072
Re: Viditelnost promenne v BASH skriptu
« Odpověď #5 kdy: 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.

 

Provoz zaštiťuje spolek OpenAlt.