Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Bash - když chci vypsat proměnnou, tak mi to vypíše prázdný řetěcez.

Dobrý den,
prosím vás, mám takový skript (zdrojový kod sem nechci kopirovat), kde se na základě první podmínky spustí cyklus A nebo cyklus B. V cyklu A je druhá podmínka na základě které se do proměnné CODE přiřadí bud jednička nebo dvojka.
V proměnné CODE je tedy číslo. Na konci skriptu když chci však proměnnou vypsat (echo "$CODE"), tak mi to vypíše prázdný řetěcez.

Rád bych, aby to vypsovalo to, co jsem do proměnné přiřadil v cyklu A.

Děkuji za odpoved.

Změna předmětu, původně: Bash
Pište výstižně předmět. Napište přesně, čeho se dotaz týká. Předměty typu "Pomozte plz" nebo "Dotaz" nejsou příliš vhodné, protože nic neříkají o vašem problému a těžko pak můžete očekávat včasnou odpověď.
add
Myslíš si, že jedno slovo je výstižný předmět?
(Kráťa) (Kráťa)

Předmět Autor Datum
Nebude problém v tom, že je proměnná CODE zanořená tak hluboko v cyklech (cyklu) a podmínkách? Vypsa…
Luk 13.03.2012 14:26
Luk
V čem bývají nejčastěji chyby?
Luk 13.03.2012 15:12
Luk
v uživateli.
touchwood 13.03.2012 15:17
touchwood
localvar.html
touchwood 13.03.2012 15:18
touchwood
Nakonec sem teda dám zdroják. #!/bin/bash CODE="0" find $1 -type d | sort | while read CESTA do VYP…
Luk 13.03.2012 19:51
Luk
vypisy se nerovnaj a proto se tam hodi ta jednicka, ne? To Continue v ifu je divné.
AZOR 13.03.2012 19:54
AZOR
ano, to je pravda. To zjednoduším, ale problém s tou proměnnou CODE to neřeší. Dekuju
Luk 13.03.2012 20:01
Luk
Jeste jsem to trochu poupravil #!/bin/bash porovnani() { VYPIS1=`ls $CESTA -p | grep "/"` VYPIS2=`l…
Luk 13.03.2012 20:05
Luk
ještě jedbodušší příklad #!/bin/bash CODE="0" find $1 -type d | sort | while read CESTA do CODE="1"…
Luk 13.03.2012 20:26
Luk
a keby si namiesto CODE="1" tam skusil bachnut nejake echo, aby si vedel vobec, ci to do danej sluck…
wam_Spider007 13.03.2012 20:57
wam_Spider007
tym 'find' sa ti forkne novy proces(subprocess), a CODE je jeho lokalna variabla ktora nieje viditel… poslední
emem 13.03.2012 21:40
emem

Nakonec sem teda dám zdroják.

#!/bin/bash

CODE="0"

  find $1 -type d | sort | while read CESTA
        do
          VYPIS1=`ls $CESTA -p | grep "/"`
          VYPIS2=`ls $CESTA -p`

         if [ "$VYPIS1" == "$VYPIS2" ]
           then
             continue
           else
             CODE="1"
         fi
        done

  echo "$CODE"   

  exit 0

prosim vás, proč to poslední echo na konci nevypíše jedničku, když se do proměnné CODE v podmínce přiřadí jednička?

Jeste jsem to trochu poupravil

#!/bin/bash

porovnani()
{
          VYPIS1=`ls $CESTA -p | grep "/"`
          VYPIS2=`ls $CESTA -p`

           if [ -z "$VYPIS1" ]
            then
            continue
           fi


           if [ "$VYPIS1" != "$VYPIS2" ]
             then
             CODE="1"
           fi
}


CODE="0"

  find $1 -type d | sort | while read CESTA
        do
          porovnani
        done

  echo "$CODE"

  exit 0

ale poslední echo stále nevypisuje jedničku, ikdyž se do proměnné CODE přiřadí

ještě jedbodušší příklad

#!/bin/bash

CODE="0"

find $1 -type d | sort | while read CESTA
      do
        CODE="1"
      done

echo "$CODE"

exit $CODE

echo na konci by podle mě mělo vypsat jedničku, ale ve skutečnosti vypíše nulu. Jak je to možné?

Zpět do poradny Odpovědět na původní otázku Nahoru