Test
test
polecenie to służy sprawdzania warunków. (Uwaga! Nie można skryptom nadawać nazwy test! Nie będą działać!).

Składnia polecenia test

test wyrażenie1 operator wyrażenie2

lub może być zapisane w postaci nawiasów kwadratowych (które są de-facto aliasem do polecenia test):
[ wyrażenie1 operator wyrażenie2 ]

Uwaga

Między nawiasami a treścią warunku muszą być spacje, inaczej skrypt nie wykona się poprawnie.
Porównując dwa łancuchy znakowe oba muszą być w cudzysłowach!

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 $?.

Uwaga

W innych językach programowania false oznaczane jest wartością równą 0, natomiast true wartością różną od zera.

Opcje dla polecnia test:

Operacje na systemie plików

-b
plik istnieje i jest blokowym plikiem specjalnym
-c
plik istnieje i jest plikiem znakowym
-d
katalog istnieje
-e
plik istnieje
-f
plik istnieje i jest plikiem zwykłym
-h
plik istnieje i jest linkiem symbolicznym
-r
plik można czytać
-w
plik można zapisywać
-x
plik można wykonywać
plik1 -nt plik2
plik1 jest nowszy od pliku2
plik1 -ot plik2
plik1 jest starszy od pliku2

Operacje arytmetyczne

-eq
równy (equal to)
-ne
różny (not equal to)
-lt
mniejszy niż (less than)
-le
mniejszy lub równy (less than or equal to)
-gt
większe niż (greather than)
-ge
większe lub równe (greather or equal to)

Operacje operujace na łańcuchach znakowych

=
równy
!=
różny
<
pierwszy tekst alfabetycznie przed drugim
>
pierwszy tekst alfabetycznie za drugim
-n
wyrażenie ma długość większą niż 0
-z
wyrażenie ma zerową długość [ $x = "" ]

Więcej przykładów można znaleźć w dokumentacji systemowej (man test, man bash).

Przykład:

#!/bin/sh
echo "Podaj login:"
read login

if [ "$login" != "kolorowy_mis" ]
then
       echo 'Dostep zabroniony, odejdz. '
else
       echo 'Witaj Kolorowy Misiu, jak mija Twoj dzien?'
fi

Skrypt przedstawiony powyżej zapyta użytkownika o imię i w zależności od opowiedzi wyświetli odpowiednie powitanie.
Uwaga

Pamiętaj, żeby zawsze otaczać zmienne znakiem cala (").W przeciwnym wypadku będzie powodował wadliwe działanie przy niektórych wartościach zmiennej (przykładowo dla pustej zmiennej, lub łancucha zawierającego w sobie spacje - odpowiada za to zmienna IFS ale nie tylko ;) ).

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License