Menu

Příkaz test

Příkaz test je naprosto zásadní pro psaní while cyklů a podmínek. Vyhodnotí jestli je jeho argument pravdivý nebo ne a podle toho zvolí návratovou hodnotu. Daleko častěji než přímo s příkazem test se setkáme s jeho variantou, kdy je výraz k vyhodnocení uzavřen do hranatých závorek [ ... ]. Závorky musí být od příkazu odděleny mezerou!

[ "$a" = "$b" ]    ... true, když jsou řetězce stejné
[ "$a" != "$b" ]   ... true, když jsou řetězce různé
[ $a -eq $b ]      ... true, když je $a = $b (číselně)
[ $a -ne $b ]      ... true, když je $a ≠ rovno $b
[ $a -gt $b ]      ... true, když je $a > $b
[ $a -ge $b ]      ... true, když je $a ≥ $b
[ $a -lt $b ]      ... true, když je $a < $b
[ $a -le $b ]      ... true, když je $a ≤ $b

[ -e "$file" ]     ... soubor $file existuje
[ -d "$file" ]     ... soubor $file existuje a je adresář
[ -f "$file" ]     ... soubor $file existuje a je obyčejný soubor

[ -n "$str" ]      ... $str není prázdný řetězec
[ -z "$str" ]      ... $str je prázdný řetězec

[ ! expr ]         ... true, když je expr false
[ expr1 -a expr2 ] ... true, když jsou expr1 i expr2 true
[ expr1 -o expr2 ] ... true, když je expr1 nebo expr2 true

Můžeme také použít závorky () pro určení priorit.

Podmínka if

if blok příkazů 1; then
    ...
elif blok příkazů 2; then
    ...
else
    ...
fi

To, zda je podmínka splněna nebo ne závisí na návratové hodnotě posledního z příkazů v bloku příkazů 1. Větve elif a else lze pochopitelně vynechat. Podmínky bude ve většině případů reprezentovat příkaz test:

if [ $n -eq 1 ]; then
    echo "<th>$n</th>"
else
    echo "<td>$n</td>"
fi