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

Dotaz: Jak na složitou podmínku pomocí case?

24.7.2012 15:41 DoDo
Jak na složitou podmínku pomocí case?
Přečteno: 215×
Odpovědět | Admin
Ahoj, nenapsal by mi prosím někdu tuto složitou podmínku pomocí case v bashi? :-(
case $VAR in
     ?? pokud je ve $VAR číslo ale není to nula spusť cd ..;;
     ?? pokud je ve $VAR nula spusť cd /home;;
     ?? pokud je ve $VAR cokoliv jiného spusť break;;
esac
Předem moc děkuji za pomoc.

Řešení dotazu:


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

Odpovědi

Tarmaq avatar 24.7.2012 16:41 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Jak na složitou podmínku pomocí case?
Odpovědět | | Sbalit | Link | Blokovat | Admin
case $VAR in                                                                     
0)                                                                             
  cd /home
  ;;                                                                           
[0-9]*)                                                                        
  cd ..                                                                 
  ;;                                                                           
*)                                                                             
  break                                                                 
  ;;                                                                           
esac
Don't panic!
24.7.2012 22:20 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Jak na složitou podmínku pomocí case?
V řetězci [0-9]* je hvězdička bashovská wildcard, není to regulérní výraz. Příklad tedy funguje jen za předpokladu, že řetězce začínající číslicí a pokračující čímkoliv typu "[0-9]cokoliv" považujete za číslo. Tedy například že "1pes" je číslo. Pokud 1pes číslo není, pak to lze udělat přesněji třeba takto:
if [[ "$VAR" == 0 ]]; then
  cd /home
elif [[ "$VAR" =~ ^[0-9]+$ ]]; then
  cd ..
else
  break :)
fi

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.