Instrukcja IF-ELSE

Sprawdza czy warunek jest prawdziwy, jeśli tak to wykonane zostanie polecenie lub polecenia znajdujące się po słowie kluczowym then. Instrukcja kończy się słowem fi.

Składnia if/else

if <warunek> ; then
    polecenia
else
    polecenia
fi

Podpowiedź

Część else jest opcjonalna. Jezeli jej nie będzie to jeśli warunek/warunki w instrukcji if przyjmą wartość false to instrukcje będące wewnątrz bloku if zostaną pominięte.

if <warunek> ; then
   polecenia
fi

Składnia if/elif/else

if <warunek> ; then
    polecenia
elif <warunek> ; then
    polecenia_2
else
    polecenia_3
fi

Przykład użycia

#!/bin/bash
if [ -e ~/.bashrc ] ; then
  echo "Masz plik .bashrc"
fi

Najpierw sprawdzany jest warunek: czy istnieje w twoim katalogu domowym plik .bashrc, zapis ~/ oznacza to samo co /home/twój_login lub $HOME. Jeśli sprawdzany warunek jest prawdziwy to wyświetlony zostanie napis Masz plik .bashrc. W przeciwnym wypadku nic się nie stanie.

W sytuacji gdy test warunku zakończy się wynikiem negatywnym można wykonać inny zestaw poleceń, które umiesczamy po słowie kluczowym else:

Przykład

#!/bin/bash
if [ -e ~/.bashrc ]
then
  echo "Masz plik.bashrc"
else
  echo "Nie masz pliku .bashrc"
fi

Jeśli warunek jest fałszywy skrypt poinformuje Cię o tym.

Można też testować dowolną ilość warunków, jeśli pierwszy warunek nie będzie prawdziwy, sprawdzony zostanie następny, kolejne testy warunków umieszczamy po słowie kluczowym elif.

Przykład

#!/bin/bash
if [ -x /opt/kde/bin/startkde ] ; then
   echo "Masz KDE w katalogu /opt"
elif [ -x /usr/bin/startkde ] ; then
  echo "Masz KDE w katalogu /usr"
elif [ -x /usr/local/bin/startkde ] ; then
  echo "Masz KDE w katalogu /usr/local"
else
  echo "Nie wiem gdzie masz KDE"
fi

Ten skrypt sprawdza gdzie jest zainstalowane KDE, sprawdzane są trzy warunki, najpierw czy plik wykonywalny startkde znajduje się w katalogu /opt/kde/bin jeśli go tam nie ma, szukany jest w /usr/bin, gdy i tu nie występuje sprawdzany jest katalog /usr/local/bin.

AND - łączenie warunków i poleceń w listy

Składnia

instrukcja1 && instrukcja2 && instrukcja3 && instrukcja4 ...

Wykonywane są instrukcje po kolei aż do momentu określenia wyniku całości wyrażenia, np. instrukcja1 zwróci FALSE, to instrukcja2 się już nie wykona - ponieważ całość wyrażenia przyjmie wartość FALSE (zobacz Algebrę Boola).

Aby otrzymać TRUE, wszystkie spośród instrukcji muszą zwrócić TRUE, w tym wypadku wszystkie one zostaną wykonane poprawnie (zwrócą 0).

Zamiast instrukcji może wystąpić dowolne wyrażenie, wtedy zamiast wykonywania instrukcji zostanie obliczona wartość tego wyrażenia. Całość można traktować jako ciąg iloczynów logicznych przetwarzany od lewej do prawej, w którym instrukcje są wykonywane dopóki wartość wyrażenia nie jest określona.

OR - łączenie warunków i poleceń w listy

Składnia

instrukcja1 || instrukcja2 || instrukcja3 || instrukcja4 ...

Analogicznie jak w przypadku listy AND instrukcje są wykonywane do momentu określenia całości wyrażenia, tylko w tym przypadku jest odwrotnie, mianowicie jeśli dowolna z instrukcji przyjmie wartość TRUE, to wartość wyrażenia będzie określona jako TRUE i dalsze instrukcje się nie wykonają.

Zwrócenie przez instrukcję FALSE powoduje dalsze przetwarzanie wyrażenia. Aby otrzymać FALSE, wszystkie instrukcje muszą zwrócić FALSE.

Podpowiedź

Wyrażenie można traktować jako ciąg sum logicznych. Można łączyć ze sobą listy AND i OR, by uzyskać bardziej skomplikowane warunki. Operatory && i || mają taki sam priorytet.

Ostrzeżenie

Całość wyrażenia jest wykonywana sekwencyjnie od lewej do prawej, jeśli chcemy to zmienić można użyć nawiasów zwykłych.