Przejdź do głównej zawartości

if


  • if – instrukcja warunkowa dostępna w powłokach takich jak Bash, sh czy zsh.
  • Umożliwia wykonywanie bloków poleceń tylko wtedy, gdy warunek logiczny zostanie spełniony.
  • Podstawowy element sterowania przepływem w skryptach powłoki.

Okno terminala
if [warunek]
then
polecenia
fi
if [warunek]; then
polecenia
else
inne_polecenia
fi
if [warunek1]; then
polecenia
elif [warunek2]; then
inne_polecenia
else
kolejne_polecenia
fi
  • Warunek jest zwykle sprawdzany za pomocą test lub nawiasów kwadratowych [].

ElementOpis
ifRozpoczyna blok instrukcji warunkowej
[ warunek ]Wyrażenie logiczne lub test do sprawdzenia
thenOddziela warunek od poleceń do wykonania
elifDodatkowy warunek sprawdzany, jeśli poprzedni jest fałszywy
elseBlok wykonujący się, jeśli wszystkie warunki są fałszywe
fiKończy blok instrukcji warunkowej

Okno terminala
# 1. Prosty warunek
if [ -f plik.txt ]; then
echo "Plik istnieje"
fi
# 2. Warunek z else
if [ "$USER" = "root" ]; then
echo "Jesteś administratorem"
else
echo "Nie jesteś administratorem"
fi
# 3. Zastosowanie elif
if [ -z "$1" ]; then
echo "Brak argumentu"
elif [ -f "$1" ]; then
echo "Argument jest plikiem"
else
echo "Argument nie jest plikiem"
fi
  • Pierwszy przykład sprawdza istnienie pliku.
  • Drugi rozróżnia komunikat w zależności od użytkownika.
  • Trzeci wykorzystuje wiele warunków.

  • if w Bash testuje kod wyjścia polecenia – 0 oznacza sukces, wartość różna od zera oznacza błąd.
  • Do testów używaj test, [ ], [[ ]] lub poleceń zwracających odpowiedni kod wyjścia.
  • [[ ]] oferuje dodatkowe możliwości, np. dopasowanie wzorców i porównania ciągów.

Błąd / KomunikatPrzyczynaRozwiązanie
syntax error: unexpected end of fileBrak zamknięcia bloku fiUpewnij się, że każdemu if odpowiada fi
unary operator expectedNiepoprawne użycie operatora testowegoUpewnij się, że zmienne są ujęte w cudzysłowy