Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Informace
Příkaz case
29. srpna 2002, 00.00 | Poslední z příkazů pro řízení průběhu scriptu, které si zde ukážeme, bude příkaz case. Ten umožňuje v některých případech mnohem pohodlnější větvení na více alternativ, než odpovídající skupina příkazů if/else.
Poslední z příkazů pro řízení průběhu scriptu, které si zde ukážeme, bude příkaz case. Ten umožňuje v některých případech mnohem pohodlnější větvení na více alternativ, než odpovídající skupina příkazů if/else.Základní formát příkazu case vypadá takto:
case slovo in
( vzorec [ | vzorec ] ...) seznam ;;
...
esac
kde slovo je prostě textový řetězec, a vzorce jsou výrazy (sestavené podle týchž pravidel, jež shell využívá pro specifikaci souborů). Jestliže dané slovo odpovídá některému ze vzorců, provede se seznam příkazů, jež za ním následují (ukončený dvojitým středníkem). Pokud slovo žádnému ze vzorců neodpovídá, neprovede se samozřejmě nic. Pro určitý seznam lze v závorkách uvést vzorců víc; v takovém případě se oddělují "svislítkem".
Triviální příklad využití příkazu case by mohl vypadat třeba takto (na řádcích 73-78 pro úsporu místa znázorňujeme celé "tělo" příkazu case jen trojicí teček — je přesně stejné, jako na řádku 72):
72 /tmp> case a in
(a) echo "Je to a" ;;
(b | c) echo "Je to b nebo c" ;;
([d-l]) echo "Je to v intervalu d..l" ;;
(??) echo "Ma to dva znaky" ;;
esac
Je to a
73 /tmp> case b in
...
Je to b nebo c
74 /tmp> case c in
...
Je to b nebo c
75 /tmp> case d in
...
Je to v intervalu d..l
76 /tmp> case h in
...
Je to v intervalu d..l
77 /tmp> case m in
...
78 /tmp> case am in
...
Ma to dva znaky
79 /tmp>
V praxi samozřejmě většinou na místě slova využijeme proměnnou (jejíž obsah jsme dříve ve skriptu získali jako výsledek nějakého výpočtu), nebo složitější výraz — následující příkaz např. zobrazí počet souborů ve složce:
91 /tmp> case `ls | wc -l | tr -cd 0-9` in
(0) echo "Nic tam neni" ;;
(1) echo "Jeden fajlik" ;;
(2) echo "Dva fajliky" ;;
(3) echo "Tri fajliky" ;;
(*) echo "Mooooc fajliku..." ;;
esac
Dva fajliky
92 /tmp> ls
ocs/ slp_ipc=
93 /tmp>
(Příkaz tr odfiltruje z výstupu různé pomocné nečíselné znaky, jež tam příkaz wc mohl uložit — např. tabelátory nebo konce řádků.)
Obsah seriálu (více o seriálu):
- Obcování s ďáblem
- Obcování s ďáblem 2 - základy
- Obcování s ďáblem 3 - Práce se soubory
- Obcování s ďáblem 4 - Další práce se soubory
- Obcování s ďáblem 5 - Stále soubory, hlavně linky
- Obcování s ďáblem 6: Pár zbývajících drobností
- Obcování s ďáblem 7: Samá voda, přihořívá, hoří!
- Obcování s ďáblem 8: Jak se do shellu volá, tak se program ozývá
- Obcování s ďáblem 9: Nové finty na programy
- Obcování s ďáblem 10: Do fronty, pánové, do fronty!
- Obcování s ďáblem 11: Standardní vstup a výstup
- Obcování s ďáblem 13: Další triky
- Obcování s ďáblem 14: Vyšší škola hledání souborů
- Obcování s ďáblem 15: Příkaz find stokrát jinak
- Obcování s ďáblem 16: Co se ještě dá uvařit z příkazu find
- Obcování s ďáblem 17: Regulární výrazy
- Obcování s ďáblem 18: Speciální regulární výrazy
- Obcování s ďáblem 19: Skládání regulárních výrazů
- Obcování s ďáblem 20: Regulární výrazy se zpětnými odkazy
- Obcování s ďáblem 21:K čemu je dobrý grep...
- Zázraky ihned, nemožné na počkání: sed
- Obcování s ďáblem - další finty s příkazem sed
- Rozsáhlejší příklad se sedem
- Obcování s ďáblem: Další kouzla, aneb awk
- Awk a proměnné
- Obcování s ďáblem 27: Awk a výrazy
- Obcování s ďáblem: Awk a funkce
- Awk a příkazy
- Co je to vlastně "uživatel"?
- Vlastnictví objektů
- Přístupová práva
- Vlastník, skupina, ostatní...
- Jak je to se skupinami?
- Skupiny a uživatelé
- Scripty
- Komentáře, a volba shellu
- Pro skript může být shell cokoli!
- Shellové skripty a argumenty
- Skripty a proměnné: aritmetika
- Proměnné shellu, "dědění" hodnot
- Práce s proměnnými
- Práce se jmény souborů
- Pole hodnot
- Další triky kolem polí...
- Standardní proměnné shellu
- Základní příkazy pro skripty
- Příkaz if
- Speciální podmínkové příkazy
- Podmínky pro práci se soubory
- Jednoduchý cyklus
- Příkaz for a pomocné příkazy break a continue
- Příkaz case
- Příkazy exit a select
- Rejstřík a přehled
- Procesy
- Informace o procesech
- Další klíčová slova pro příkaz ps
- Příkaz ps: několik praktických přepínačů
- A k čemu že je "ps" dobré?
- Copak procesor, s pamětí je to horší
- Virtuální paměť
- A ještě jednou virtuální paměť
- Zpět k příkazu ps
- Skutečný žrout paměti
- Ještě jednou top
- Doplněk k topu: vm_stat
- Co to tedy všechno znamená?
- Nevychází nám dal a má dáti?
- Kam se stránky ukládají?
- Změna odkládacího disku
- Změna odkládacího disku / fstab
- Poslední poznámka k fstab
- A jak to je se soubory?
- Co vlastně příkaz lsof vypisuje?
- Příkaz lsof a obsah sloupce NAME
- SIPS - Terminál není jen pro nadšence UNIXu
- Tak nám zabili NetInfo, paní Müllerová