Test
test je unixový nástroj pro kontrolu typů souborů a porovnávání hodnot. Vrátí návratový kód 0 (pravda) nebo 1 (nepravda) v závislosti na vyhodnocení výrazu expr. Výrazy mohou být unární nebo binární. Unární výrazy se často používají ke kontrole stavu souboru. Můžete také porovnávat čísla a řetězce.
Počínaje UNIX System III se nástroj stal vestavěným a jeho druhá forma, [. [jeden]
Použití
test [expr]test {--help,--version}
Obvykle se používá v jednoduchých shellových skriptech pro různé druhy kontrol. Následující příklad odstraní běžný soubor test.txt, pokud existuje, nebo zobrazí zprávu, že soubor neexistuje.
#!/bin/sh
if test -f test.txt
then
rm test.txt
else
echo 'soubor test.txt nenalezen'
fi
Pro zkrácení kódu skriptu použijte párový operátor '[' jako synonymum pro test. Operátor páru vyžaduje mezeru mezi závorkami, protože [ (závorka) je příkaz shellu a shelly kompatibilní s POSIXem vyžadují mezeru mezi příkazem a jeho argumenty.
#!/bin/sh
if [ -f test.txt ]
then
rm test.txt
else
echo 'soubor test.txt nenalezen'
fi
Možnosti spuštění
-b filetrue, pokud soubor existuje a jedná se o speciální blokové zařízení.-c filetrue, pokud soubor existuje a je znakovým zařízením.-d filetrue, pokud soubor existuje a je adresářem.-e fileje pravda, pokud soubor existuje.-f filetrue , pokud soubor existuje a je to běžný soubor.-g filetrue, pokud soubor existuje a má nastavené ID skupiny (set-group-id).-k filetrue, pokud má soubor nastavený lepivý bit.-L filetrue, pokud soubor existuje a jedná se o symbolický odkaz.-p filetrue, pokud soubor existuje a je pojmenovaným kanálem (rourou).-r filetrue, pokud soubor existuje a je čitelný.-s filetrue, pokud soubor existuje a má velikost větší než nula.-S filetrue, pokud soubor existuje a je to soket.-t [fd]true, pokud je na terminálu otevřeno fd. Pokud je fd vynecháno, výchozí je 1 (stdout).-u filetrue, pokud soubor existuje a má nastavený bit uživatele (set-user-id).-w filetrue, pokud soubor existuje a je možné do něj zapisovat.-x filetrue, pokud soubor existuje a je spustitelný.-O filetrue, pokud soubor existuje a jeho vlastník má efektivní ID uživatele.-G filetrue, pokud soubor existuje a jeho vlastník má efektivní ID skupiny.file1 -nt file2true, pokud je soubor1 novější (datum změny) než soubor2.file1 -ot file2true, pokud je soubor1 starší než soubor2.file1 -ef file2true, pokud soubor1 a soubor2 mají stejné zařízení a číslo inodu.-z string— true, pokud je délka řetězce nula.-n stringje pravda, pokud je délka řetězce nenulová.string1 = string2true, pokud jsou řetězce stejné.string1 != string2true, pokud se řetězce nerovnají.! exprje pravdivé, pokud je expr nepravdivé.expr1 -a expr2je pravdivé, pokud jsou pravdivé oba výrazy1 i výraz2.expr1 -o expr2má hodnotu true, pokud je alespoň jeden z výrazů výraz1 nebo výraz2 pravdivý.arg1 %оператор% arg2 -eq, -ne, -lt, -le, -gt, или -ge- tyto binární aritmetické operace vrátí hodnotu true, pokud je arg1 rovno (-eq), nerovná se (-ne), menší než (-lt), menší nebo rovno (-le), větší než (-gt) nebo větší nebo rovno (-ge) než arg2, v daném pořadí. arg1 a arg2 mohou být kladná celá čísla, záporná celá čísla nebo speciální řetězcové výrazy -l, které počítají délku řetězce.
Poznámky
- ↑ tradiční rodina Bourne shell / historie a vývoj . www.in-ulm.de. Získáno 15. července 2017. Archivováno z originálu 14. dubna 2020.
Odkazy
test(1)- manuálová stránka pro uživatelské příkazy GNU/Linux ( viz GNU Coreutils )test(1)- manuálová stránka pro uživatelské příkazy OpenBSDtest(1)- manuálová stránka pro uživatelské příkazy FreeBSD