logo [8kb]
Instrukcja if
Instrukcja warunkowa if

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 warunek
then
  polecenie
fi
Przykład:
#!/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:

Składnia:

if warunek
then
  polecenie1
else
  polecenie2
fi

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.

Składnia:

if warunek
then
  polecenie1
elif warunek
then
  polecenie2
fi

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 masz 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.
test
Jak się sprawdza warunki?

Służy do tego polecenie test. (Uwaga! Nie można skryptom nadawać nazwy test! Nie będą działać.)

Składnia:

test wyrażenie1 operator wyrażenie2
lub może być zapisane w postaci nawiasów kwadratowych:
[ wyrażenie1 operator wyrażenie2 ]

Uwaga! Między nawiasami a treścią warunku muszą być spacje, tak jak powyżej.

Polecnie test zwraca wartość 0 (true) jeśli warunek jest spełniony i wartość 1 (false) jeśli warunek nie jest spełniony. A gdzie jest umieszczana ta wartość? W zmiennej specjalnej $?.

A to kilka przykładów operatorów polecenia test:

  • -a plik istnieje
  • -b plik istnieje i jest blokowym plikiem specjalnym
  • - plik istnieje i jest plikiem znakowym
  • -e plik istnieje
  • -h plik istnieje i jest linkiem symbolicznym
  • = sprawdza czy wyrażenia są równe
  • != sprawdza czy wyrażenia są różne
  • -n wyrażenie ma długość większą niż 0
  • -d wyrażenie istnieje i jest katalogiem
  • -z wyrażenie ma zerową długość
  • -r można czytać plik
  • -w można zapisywać do pliku
  • -x można plik wykonać
  • -f plik istnieje i jest plikiem zwykłym
  • -p plik jest łączem nazwanym
  • -N plik istnieje i był zmieniany od czasu jego ostatniego odczytu
  • plik1 -nt plik2 plik1 jest nowszy od pliku2
  • plik1 -ot plik2 plik1 jest starszy od pliku2
  • -lt mniejsze niż
  • -gt większe niż
  • -ge większe lub równe
  • -le mniejsze lub równe

Więcej przykładów operatorów w: man bash.


[ Index ] [ Instrukcja case ]