PředchozíNahoruDalšíObsah

4.1 If ... else ... elif ... fi

Jedna z nejběžnějších a nejdůležitějších struktur ve skriptech je právě struktura if. Ta umožňuje na základě podmínky vykonat buđ tu nebo jinou činnost. Používá se na větvení programu, kde na základě vyhodnocení podmínky se pokračuje danou částí kódu. Příklad struktury if je zde:

if test -f /etc/foo
then   #Soubor existuje. Zkopíruj tedy soubor
  cp /etc/foo .
  echo "Hotovo!"
else
  # Soubor neexistuje. Vypiš tedy chybu
  echo "Soubor neexistuje!"
  exit
fi

Tento příklad tedy na základě vyhodnocení příkazem test soubor /etc/foo zkopíruje nebo neexistuje-li soubor, vypíše se chybové hlášení. K otestování existence souboru je použit příkaz test. Příkaz na základě přepínače -f určí, zda-li je /etc/foo soubor. Další možnosti přepínače příkazu test shrnuje následující tabulka. Je také možno použít manuálovou stránku:

Možnosti příkazu test
-d testuje, jestli soubor je adresář
-e testuje, jestli soubor existuje
-f testuje, jedná-li se o regulární soubor
-g testuje, má-li soubor povolení SIGD
-r testuje, zda-li jde soubor číst
-s testuje, zda-li velikost souboru není 0
-u testuje, má-li soubor povolení SUID
-w testuje, zda-li se dá do souboru zapisovat
-x testuje, zda-li je soubor spustitelný

Jestliže není splněna podmínka testovaná příkazem if, neprovede se tedy blok příkazů uvedený za slovem then, ale za to se provedou příkazy v bloku zahájeném příkazem else (pokdu se vyskytuje). Je zde také slovo elif. To je používáno pro testování podmínky místo příkazu else. Normálně se totiž blok příkazů začínající else provede automaticky po nesplnění podmínky. Ale příkaz elif místo příkazu else umožní, že se tento blok provede jen pokud vyhoví podmínka za příkazem elif.

Připadá-li vám formát podmínky příliš nekomfortní, je možné používat také formát následující:

if test -f /etc/foo
then

# se dá také zapsat takto:

if [ -f /etc/foo ]; then

Hranaté závorky nahrazují příkaz test. Máte-li zkušenosti s programováním v jazyce C, může vám tato syntaxe připadat více komfortnější. Středník ; říká interpretru, že je zde konec řádku. Všechno, co následuje za středníkem je chápáno jako by bylo na novém řádku. Je to důležité, protože bash očekává příkaz then až na následujícím řádku.

PředchozíNahoruDalšíObsah

9. dubna 2001 19:25