test (Unix)
test
je program nacházející se v Unixových systémech. Slouží k vyhodnocení výrazu, který je v daném formátu předán jako argumenty na příkazové řádce. Hojně se používá při vyhodnocování podmínek v shellech (např. bash). Při skriptování v unixových shellech se namísto test vyraz
více používá ekvivalentní varianta [ vyraz ]
, která se více podobá programátorskému zápisu.
Použití
editovatNávratová hodnota
editovatV případě pravdivého výrazu vrací příkaz test
0.
Uveďme typické příklady použití:
(Ne)Rovnost řetězců
editovat test $STR1 = $STR2
test $STR1 != $STR2
Relace mezi dvěma celými čísly
editovat -eq: rovnost,
-ge: levý operand větší nebo roven pravému
-gt: levý operand větší než pravý
analogicky -le, -lt, -ne
Příklad (je levý operand větší než pravý?):
test $NUM1 -gt $NUM2
Práce se soubory
editovatTento příkaz zkontroluje, zda $DIR
existuje a je zároveň adresářem:
test -d $DIR
Přepínač -e
použijeme pro ověření existence souboru.
Použití při větvení
editovatUveďme příklad pro kontrolu počtu argumentů. Předpokládejme, že jsme napsali skript, který vyžaduje pevný počet vstupních argumentů (např. 3). Proveďme tedy kontrolu a v případě neúspěchu vraťme kladnou hodnotu indikující neúspěch:
if test "$#" -ne 3; then
echo "Spatny pocet argumentu!"
exit 1
fi
Nebo jiným zápisem:
if [ "$#" -ne 3 ]; then
echo "Spatny pocet argumentu!"
exit 1
fi
Za povšimnutí stojí to, že v druhém případě je potřeba správně vložit mezery. Níže uvedenému shell rozumět nebude
[3 -eq 3]
protože shell nezná program s názvem [3
.