Instrukcja warunkowa if w BASH-u

Stronę tą wyświetlono już: 194 razy

Ogólna konstrukcja instrukcji warunkowej if w BASH-u

Instrukcja warunkowa if wygląda następująco:

Listing 1
  1. if [ warunek1 ]
  2. then
  3. echo "warunek 1 jest spełniony";
  4. elif [ warunek2 ]
  5. then
  6. echo "warunek 2 jest spełniony";
  7. else
  8. echo "warunek 1 ani warunek 2 nie zostały spełnione";
  9. fi

Ważne jest, że instrukcje warunkowe muszą znaleźć się wewnątrz nawiasów kwadratowych, które muszą być oddzielone od tychże nawiasów spacją, ponieważ zapis:

Listing 2
  1. if [warunek1]

spowoduje błąd.

Warunki i operatory logiczne

Zapisywanie warunkowych instrukcji w pętli wymaga znajomości operatorów warunkowych BASH-a, oto niektóre z nich:

OperatorOpis operatora
-nwartość podana po prawej stronie tego operatora ma niezerową długość, przykład:
Listing 3
  1. VALUE="jakiś tekst";
  2. if [ -n "$VALUE" ]
  3. then
  4. echo "zawiera niezerowej długości łańcuch znaków";
  5. else
  6. echo "zawiera zerowej długości łańcuch znaków";
  7. fi
-zodwrotność operatora -n;
-dzwraca prawdę, jeżeli istnieje plik o nazwie podanej po prawej stronie tego operatora, przykład:
Listing 4
  1. VALUE="folder";
  2. if [ -d "$VALUE" ]
  3. then
  4. echo "folder istnieje";
  5. else
  6. echo "folder nie istnieje";
  7. fi
-fto samo co -d, tylko że dla plików;
-eto samo co -d i -e, tylko że dla plików i folderów;
-Lto samo co -f, z tą różnicą, że sprawdza czy plik jest dowiązaniem symbolicznym;
-eqsprawdza, czy liczba podana po lewej stronie operatora jest równa liczbie podanej po jego prawej stronie, przykład:
Listing 5
  1. VALUE1=120;
  2. VALUE2=120;
  3. if [ $VALUE1 -eq $VALUE2 ]
  4. then
  5. echo "są równe";
  6. else
  7. echo "nie są równe";
  8. fi
-neqsprawdza czy dwie wartości liczbowe nie są sobie równe;
=sprawdza, czy wyrażenie po lewej stronie operatora jest takie same co po prawej stronie operatora;
!=sprawdza, czy wyrażenie po lewej stronie operatora nie jest takie same co po jego prawej stronie;
-ltsprawdza, czy wartość liczbowa po lewej stronie operatora jest mniejsza od wartości liczbowej po jego prawej stronie;
-lesprawdza, czy wartość liczbowa po lewej stronie operatora jest mniejsza lub równa wartości liczbowej po jego prawej stronie;
-gtsprawdza, czy wartość liczbowa po lewej stronie operatora jest większa niż wartość liczbowa po jego prawej stronie;
-gesprawdza, czy wartość liczbowa po lewej stronie operatora jest większa lub równa wartości liczbowej po jego prawej stronie.

Komentarze