Portál AbcLinuxu, 12. května 2025 06:02

Dotaz: jak vložit do case položky vytvořené scriptem.

18.11.2012 00:05 Jakub
jak vložit do case položky vytvořené scriptem.
Přečteno: 199×
Odpovědět | Admin
Ahoj, mám ještě jeden takový problém se kterým nevím hnout
case $VAR in
  01) source /menu/aaa;;
  02) source /menu/bbb;;
  03) source /menu/ccc;;

/* tady bych potřeboval vložit chybějící položky které vyplivne kód ale nevím jak je sem vložit */

  06) source /menu/eee;;
  07) source /menu/fff;;
esac
neporadí někdo? Díky

Ř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

18.11.2012 00:18 l4m4
Rozbalit Rozbalit vše Re: jak vložit do case položky vytvořené scriptem.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ideálně vygenerovat celý ten case a normálně ho source-nout.

Nebudu raději přemýšlet nad tím, proč něco takového chceš...
18.11.2012 00:21 NN
Rozbalit Rozbalit vše Re: jak vložit do case položky vytvořené scriptem.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jaky kod vyplivne co ?
18.11.2012 00:22 2012 | skóre: 16 | blog: co_me_dneska_napadlo
Rozbalit Rozbalit vše Re: jak vložit do case položky vytvořené scriptem.
Odpovědět | | Sbalit | Link | Blokovat | Admin
myslis takhle?
#!/bin/bash

ONE=3;
VAR=03;

case $VAR in
  01) echo "a";;
  02) echo "b";;
  0$ONE) echo "c";;
  04) echo "d";;
esac

rADOn avatar 18.11.2012 01:03 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: jak vložit do case položky vytvořené scriptem.
Odpovědět | | Sbalit | Link | Blokovat | Admin
nemusis nic generovat, muzes to zachytit wildcardou
case $VAR in
  01) source /menu/aaa;;
  02) source /menu/bbb;;
  03) source /menu/ccc;;

/* tady nebudes nic vkladat, zachyti to wildcarda na konci  */

  06) source /menu/eee;;
  07) source /menu/fff;;
  *) source /menu/xxx $VAR ;;
esac
Skript xxx dostane VAR jako argument a muze se podle toho rozhodnout. Nebo muzes udelat vic takovych skriptu:
case $VAR in
  01) source /menu/aaa;;
  02) source /menu/bbb;;
  03) source /menu/ccc;;

/* tady nebudes nic vkladat, zachyti to wildcarda na konci  */

  06) source /menu/eee;;
  07) source /menu/fff;;
  *) test -f /menu/xxx-${VAR} && source /menu/xxx-${VAR} ;;
esac
Pokud bude VAR="05" a bude existovat /menu/xxx-05 , vykona se. Case patterny v bashi muzou obsahovat obvykle expanze a substituce, takze se s tim da blbnout podstatne vic nez co umi switch statement ve vetsine jinych jazyku, ale to uz musis r.t.f.m.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
18.11.2012 10:29 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: jak vložit do case položky vytvořené scriptem.
Ak si zapne shopt -e extglob, tak ma v case aj regularne vyrazy. Vdaka !() dokonca mozno aj viac, ale to uz nech posudi nejaky lingvista.
If you hold a Unix shell up to your ear, you can you hear the C.

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.