Portál AbcLinuxu, 9. května 2025 03:17

Dotaz: bash script a problem s prizrazenim promenne

19.12.2011 11:40 hates
bash script a problem s prizrazenim promenne
Přečteno: 306×
Odpovědět | Admin
Mam problem s prirazenim hodnoty do promenne script vypada asi nasledovne

#!/bin/bash
RELOAD_NAMED="1"
while true; do
   find bla bla | while read neco; do
       [ "$?" -eq 0 ] && RELOAD_NAMED="0"
       echo ${RELOAD_NAMED}
   done

   if [ "${RELOAD_NAMED}" -eq 0 ]; then
       #rndc reload
       echo "Probehl reload DNS serveru"
   fi


done

a ted babo rad proc pokud vyhovi podminka [ "$?" -eq 0 ] nepriradi do promenne RELOAD_NAMED hodnotu 0

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.12.2011 12:01 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: bash script a problem s prizrazenim promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
a ted babo rad proc pokud vyhovi podminka [ "$?" -eq 0 ] nepriradi do promenne RELOAD_NAMED hodnotu 0
Přiřadí, ale příkaz běží v subshellu (spouští se find | while read ...), takže se nemůže propagovat do rodičovského procesu.
I am always ready to learn although I do not always like to be taught. (W. Churchill)
19.12.2011 12:05 Kit
Rozbalit Rozbalit vše Re: bash script a problem s prizrazenim promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ta hodnota se přiřadí, ale jen lokálně uvnitř cyklu. Po jeho opuštění přestává platit. Místo toho je opět viditelná původní hodnota před vstupem do cyklu.

Ten skript je divně napsaný. Čeho chceš dosáhnout? Možná se to dá napsat mnohem jednodušeji na jednom řádku.
19.12.2011 12:09 hates
Rozbalit Rozbalit vše Re: bash script a problem s prizrazenim promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
joj to je presne ono. tak ze si ji musim vyhodit jako promennou prostredi.

Ten script na jeden radek psat nejde. protoze je dooost dlouhy.
pepe_ avatar 19.12.2011 12:19 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: bash script a problem s prizrazenim promenne

a jak se to da udelat ?   nastavit jako   env ?

19.12.2011 12:42 Kit
Rozbalit Rozbalit vše Re: bash script a problem s prizrazenim promenne
Ten script na jeden radek psat nejde. protoze je dooost dlouhy.
Chtěl jsem tím naznačit, že ten cyklus je tam možná úplně zbytečný a že by to mohlo jít bez něho. A že by se to možná dalo napsat i bez té proměnné, kterou se snažíš měnit.
19.12.2011 12:25 NN
Rozbalit Rozbalit vše Re: bash script a problem s prizrazenim promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
To je cely divny, $? vrati exist status posledniho prikazu. Mas tam smycku ve ktere vystup z findu nasmerujes do vstupu cyklu(wtf??) a sledujes exit status ? To nedava zadny smysl.

NN
19.12.2011 12:29 hates
Rozbalit Rozbalit vše Re: bash script a problem s prizrazenim promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
sakra me taky ne. env je taky blbost.
19.12.2011 12:31 hates
Rozbalit Rozbalit vše Re: bash script a problem s prizrazenim promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
samozrejme ze pred [ "$?" -eq 0 ] && RELOAD_NAMED="0" je prikaz, u ktereho sleduji navratovou hodnotu
jose17 avatar 19.12.2011 12:50 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: bash script a problem s prizrazenim promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
pozri tiez http://mywiki.wooledge.org/BashFAQ/024
Ja vim, on vi, ty nano!
19.12.2011 12:55 hates
Rozbalit Rozbalit vše Re: bash script a problem s prizrazenim promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
tak momentalne vyreseno pid souborem v tmp, ale neni to uplne koser
20.12.2011 06:32 Ash | skóre: 53
Rozbalit Rozbalit vše Re: bash script a problem s prizrazenim promenne
Odpovědět | | Sbalit | Link | Blokovat | Admin
while read neco; do
       [ "$?" -eq 0 ] && RELOAD_NAMED="0"
       echo ${RELOAD_NAMED}
done < <(find bla bla)

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.