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:
Software
Příkaz if
4. července 2002, 00.00 | Pomocí příkazu if můžeme větvit provádění skriptu: jestliže jsou třeba špatně zadané jeho vstupní parametry, chceme vypsat nápovědu; jestliže neexistuje archivační program gnutar, použijeme namísto něj tar... a podobně.
Pomocí příkazu if můžeme větvit provádění skriptu: jestliže jsou třeba špatně zadané jeho vstupní parametry, chceme vypsat nápovědu; jestliže neexistuje archivační program gnutar, použijeme namísto něj tar... a podobně.Příkaz if využívá seznamy a jejich návratové hodnoty, jak jsme si je popsali v minulém dílu: jeden seznam representuje jeho podmínku, jejíž výsledek závisí na návratové hodnotě; podle toho se provedou (nebo neprovedou) další seznamy, jež tvoří tělo příkazu. V nejjednodušší podobě tedy příkaz if vypadá takto:
if seznam then seznam fi
Jeho interpretace je snad zřejmá: nejprve se vyhodnotí první seznam podle pravidel, jež jsme si popsali v minulém dílu. Jestliže "platí" (tedy návratová hodnota seznamu je nulová; programátoři v C si musí dát pozor, protože tam je tomu naopak), druhý seznam se provede; neplatí-li (návratová hodnota prvého seznamu je nenulová), neprovede se nic:
153 /tmp> echo Huhly > test
154 /tmp> if fgrep -q uh test ; then echo Jetam ; fi
Jetam
155 /tmp> if fgrep -q eh test ; then echo Jetam ; fi
156 /tmp> if fgrep -q -v uh test ; then echo Nenitam ; fi
157 /tmp> if fgrep -q -v eh test ; then echo Nenitam ; fi
Nenitam
158 /tmp>
Příkaz if v zsh (trochu podobně, jako ve vyšších programovacích jazycích) ovšem nabízí bohatší možnosti. Především — jak už vyplývá z definice seznamu, jak jsme si ji ukázali minule — seznam může obsahovat libovolné množství příkazů:
158 /tmp> if fgrep -q uh test ; then echo Je; echo tam ; echo '"uh"' ; fi
Je
tam
"uh"
159 /tmp>
(Ve skriptech můžeme namísto středníku oddělovat příkazy také tím, že je zapisujeme na samostatné řádky — to je často přehlednější.)
Můžeme také použít blok else a libovolné množství bloků elif pro bohatší větvení: else znamená "provést, když podmínka neplatí":
159 /tmp> if fgrep -q uh test ; then echo Jetam ; else echo Nenitam ; fi
Jetam
160 /tmp> if fgrep -q eh test ; then echo Jetam ; else echo Nenitam ; fi
Nenitam
161 /tmp>
Bloky elif mají vlastní podmínku (tentokrát namísto středníků oddělíme jednotlivé části příkazu konci řádků; povšimněte si "promptů", jimiž zsh dává uživateli na vědomí, v jakém stavu "rozpracovanosti" příkaz if právě je):
161 /tmp> if fgrep -q eh test
if> then echo Jetam '"eh"'
then> elif fgrep -q uh test
elif> then echo Jetam '"uh"'
elif-then> else echo Neni tam ani jeden
else> fi
Jetam "uh"
162 /tmp>
Příště se podíváme na některé speciální příkazy, jež můžeme používat na místě seznamu, representujícího podmínku příkazu if.
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á