Portál AbcLinuxu, 12. května 2025 11:09

Dotaz: Bash a zacykleni?

21.6.2012 18:10 Martin
Bash a zacykleni?
Přečteno: 401×
Odpovědět | Admin
Ahoj, mam tri funkce, pokud v menu zvolim pozadovanou polozku tak se spusti funkce yes_no kde muzu funkci spustit nebo se vratit zpet do menu. Pokud se vratim zpet do menu a zvolim zase v menu nejakeou funkci nebo tu stejnou a tentoktat dam souhlas k pokracovani ve funkci yes_no, spusti se i ta funkce, kterou jsem pred tim nepotvrdil. Když dam zpet 10x tak se to spusti az dam souhlas celkem 11x. Co delam blbe? Díky
# spusti dotaz 0 == pokracuj, 1 == zpet
function yes_no {
case $? in
0);;
1)menu;;
esac
}

# spusti pozadovanou akci
function akce {
echo "jdu makat"
}

# spusti funkci akce nebo ukoci script
function menu {
case $? in
0)akce;;
1)exit;;
esac
}
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.6.2012 19:35 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Bash a zacykleni?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co delam blbe?

Posielas nekompletny kod a chces odpoved. Kde sa vola yes_no? Co si predstavujes pod $? ?
If you hold a Unix shell up to your ear, you can you hear the C.
21.6.2012 20:29 Martin
Rozbalit Rozbalit vše Re: Bash a zacykleni?
Posielas nekompletny kod a chces odpoved.
Nechtěl jsem zde psát tunu kodu, myslel jsem ze na pochopeni to staci..
Kde sa vola yes_no?
Omluva, doplneno
# spusti pozadovanou akci
function akce {
yes_no
echo "jdu makat"
}
Co si predstavujes pod $? ?
v $? je uložena vždy poslední hodnota, v tomto případě to je vždy bud 0 or 1

21.6.2012 21:50 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Bash a zacykleni?
K comu ti je posledna NAVRATOVA hodnota som vobec nepochopil. Predpokladam,z e si sa nepoucil a zase si z kodu vysekal nejaku funkciu, ktora sa pyta usera a vracia prislusnu navratovu hodnotu. Uvadzaj cely kod, pokial ho nie je fakt extremne vela. Najma pokial mas problemy s tak jednoduchymi vecami, tak nepredpokladaj, ze nerobis chyby aj pri osekavani kodu.

a) google rekurze

b) v yes_no sa riad tym komentarom co tam mas a po "1" nechod dovnutra (volanim menu) ale fakt spat (return).
If you hold a Unix shell up to your ear, you can you hear the C.
22.6.2012 06:33 Kit
Rozbalit Rozbalit vše Re: Bash a zacykleni?
Obávám se, že ta šílenost _je_ kompletní. Ne, opravdu se takové menu nedá dělat takovou rekurzí a už vůbec se nedá proměnná $? používat jako globální pro předávání hodnoty mezi funkcemi, protože se mění po každém provedení příkazu, tedy i při volání funkce, ve které by ji někdo chtěl vyhodnocovat.
22.6.2012 01:16 aaaaaaaaaaaaaa
Rozbalit Rozbalit vše Re: Bash a zacykleni?
Odpovědět | | Sbalit | Link | Blokovat | Admin

Nikdy nepouzivajte specialne premenne, ak ich naozaj nepotrebujete. A ak ich potrebujete, tak si ich ulozte do "klasickych" premennych a potom s nimi pracujte. Toto plati aj pre premenne $$, $!, $? a z bashovin $RANDOM

Odporucam pouzit namiesto $? parametre funkcii - to sa da aspon pekne odtrasovat (stacia prikazy echo v sledovacich bodoch alebo set +x na zaciatku). $? znamena return hodnotu posledneho spusteneho spusteneho programu, ale tu meni aj taky obycajny program echo alebo [.

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.