Test
Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od
verze recenzované 24. března 2017; kontroly vyžadují
19 úprav .
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 file true, pokud soubor existuje a jedná se o speciální blokové zařízení.
- -c file true, pokud soubor existuje a je znakovým zařízením.
- -d file true, pokud soubor existuje a je adresářem.
- -e file je pravda, pokud soubor existuje.
- -f file true , pokud soubor existuje a je to běžný soubor.
- -g file true, pokud soubor existuje a má nastavené ID skupiny (set-group-id).
- -k file true, pokud má soubor nastavený lepivý bit.
- -L file true, pokud soubor existuje a jedná se o symbolický odkaz.
- -p file true, pokud soubor existuje a je pojmenovaným kanálem (rourou).
- -r file true, pokud soubor existuje a je čitelný.
- -s file true, pokud soubor existuje a má velikost větší než nula.
- -S file true, 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 file true, pokud soubor existuje a má nastavený bit uživatele (set-user-id).
- -w file true, pokud soubor existuje a je možné do něj zapisovat.
- -x file true, pokud soubor existuje a je spustitelný.
- -O file true, pokud soubor existuje a jeho vlastník má efektivní ID uživatele.
- -G file true, pokud soubor existuje a jeho vlastník má efektivní ID skupiny.
- file1 -nt file2 true, pokud je soubor1 novější (datum změny) než soubor2.
- file1 -ot file2 true, pokud je soubor1 starší než soubor2.
- file1 -ef file2 true, pokud soubor1 a soubor2 mají stejné zařízení a číslo inodu.
- -z string— true, pokud je délka řetězce nula.
- -n string je pravda, pokud je délka řetězce nenulová.
- string1 = string2 true, pokud jsou řetězce stejné.
- string1 != string2 true, pokud se řetězce nerovnají.
- ! expr je pravdivé, pokud je expr nepravdivé.
- expr1 -a expr2 je pravdivé, pokud jsou pravdivé oba výrazy1 i výraz2.
- expr1 -o expr2 má 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. (neurčitý)
Odkazy