Przejdź do głównej zawartości

test


test służy do sprawdzania warunków logicznych w skryptach i wierszu poleceń. Może porównywać liczby, ciągi znaków, sprawdzać właściwości plików (istnienie, prawa dostępu, typ) oraz oceniać wyrażenia logiczne.

  • Zastosowania: tworzenie instrukcji warunkowych w skryptach, kontrola przepływu wykonywania.
  • Dostępność: wbudowane w większość powłok (bash, sh, ksh) oraz jako samodzielne polecenie (/usr/bin/test).

Okno terminala
test WYRAŻENIE
[ WYRAŻENIE ]
[[ WYRAŻENIE ]] # Rozszerzona składnia bash
  • Warianty: użycie słowa kluczowego test lub nawiasów kwadratowych [], a w bash także podwójnych nawiasów [[ ]] dla rozszerzonych porównań.

ParametrOpis
-e plikSprawdza, czy plik istnieje.
-f plikSprawdza, czy plik istnieje i jest zwykłym plikiem.
-d katalogSprawdza, czy istnieje katalog.
-r/-w/-x plikSprawdza prawa dostępu: odczyt, zapis, wykonanie.
str1 = str2Porównuje równość ciągów znaków.
str1 != str2Sprawdza, czy ciągi są różne.
-n strSprawdza, czy ciąg ma długość większą niż 0.
-z strSprawdza, czy ciąg jest pusty.
n1 -eq n2Sprawdza równość liczb całkowitych.
n1 -ne/-lt/-le/-gt/-ge n2Porównania liczbowe: różne, mniejsze, mniejsze/równe, większe, większe/równe.
! wyrażenieNeguje wynik wyrażenia.
wyraż1 -a wyraż2AND logiczne (oba muszą być prawdziwe).
wyraż1 -o wyraż2OR logiczne (przynajmniej jedno prawdziwe).

Okno terminala
# Sprawdź, czy plik istnieje
test -e plik.txt && echo "Plik istnieje"
Okno terminala
# Porównanie liczb
if [ "$a" -gt "$b" ]; then echo "a > b"; fi
Okno terminala
# Użycie rozszerzonej składni bash
if [[ $str == "abc*" ]]; then echo "Pasuje"; fi

  • W bash [[ ]] jest bezpieczniejsze dla porównań ciągów (brak potrzeby uciekania niektórych znaków).
  • Należy pamiętać o odstępach między nawiasami [] a wyrażeniem – brak spacji spowoduje błąd składni.
  • test zwraca kod zakończenia 0 (prawda) lub 1 (fałsz), co można wykorzystać w instrukcjach warunkowych i łańcuchach poleceń.

Błąd / KomunikatPrzyczynaRozwiązanie
[: missing ]Brak spacji lub zamykającego nawiasu w składni.Dodaj spacje wokół wyrażenia.
unary operator expectedBrak argumentu w wyrażeniu (np. zmienna pusta).Sprawdź, czy zmienne są ustawione, używaj "$var".
Niewłaściwe porównanie liczbUżycie operatorów > lub < zamiast -gt/-lt.W porównaniach liczbowych stosuj odpowiednie operatory.