Test (Unix) - Test (Unix)
Ostatní jména | [ |
---|---|
Vývojáři | Rozličný open-source a komerční vývojáři |
Operační systém | Unix, Unixový, Plán 9, IBM i |
Typ | Příkaz |
Licence | coreutils: GPLv3 + |
test je příkazový řádek nástroj nalezen v Unix, Plán 9, a Unixový operační systémy, které vyhodnocují podmíněné výrazy. test se v roce 1981 změnilo na vestavěné velení shellu s Systém UNIX III a zároveň zpřístupněny pod alternativním názvem [.[1]
Přehled
The test
příkaz v Unixu vyhodnotí výraz
parametr. Ve většině nedávných implementací prostředí je to a vestavěný shell, přestože externí verze stále existuje. Ve druhé formě příkazu je [ ]
(závorky) musí být obklopeny mezerami (je to proto [
je program a POSIX kompatibilní skořápky vyžadují mezeru mezi názvem programu a jeho argumenty). Je třeba explicitně otestovat názvy souborů v souboru C shell. Substituce názvu souboru (globování ) způsobí ukončení skriptu prostředí.
The test
příkaz nesmí být zaměňován s [[
vyhrazené slovo, které bylo zavedeno s ksh88. Ten není příkazem, ale součástí syntaxe ksh88 a na výrazy glob nepoužívá substituci názvu souboru.
Verze test
svázaný GNU coreutils napsal Kevin Braunsdorf a Matthew Bradburn.[2] The test příkaz byl také přenesen do IBM i operační systém.[3]
Syntax
test výraz
nebo
[ výraz ]
Argumenty
K sestavení tohoto parametru se používají následující argumenty:
-E FileName - FileName existuje
Všechny zbývající argumenty vrátí true, pokud objekt (soubor nebo řetězec) existuje a zadaná podmínka je true.
-b Název souboru - Vrátí skutečnou hodnotu ukončení, pokud existuje zadaný název souboru a jedná se o speciální soubor bloku-C FileName - FileName je a znakový speciální soubor-d FileName - FileName je a adresář-F FileName - FileName je běžný soubor-G FileName - sada FileName ID skupiny bit je nastaven-h FileName - FileName je a symbolický odkaz-k FileName - je nastaven lepivý bit FileName-L FileName - FileName je a symbolický odkaz-p FileName - FileName je a pojmenovaná roura (FIFO)-r FileName - FileName je čitelný aktuálním procesem-s FileName - FileName má velikost větší než 0-t FileDescriptor - FileDescriptor je otevřená a spojená s a terminál-u FileName - sada FileName uživatelské ID bit je nastaven
-w FileName - příznak zápisu FileName je zapnutý. Název souboru však nebude možné zapisovat do systému souborů jen pro čtení, i když test označuje hodnotu true
-X Název souboru - Název souboru vykonat příznak je zapnutý Pokud zadaný soubor existuje a je adresářem,Skutečný
výstupní hodnota označuje, že aktuální proces má oprávnění ke změněCD
do adresáře.
Nestandardní Korn Shell rozšíření:
soubor1 - ne file2 - file1 je novější než file2file1 - ne file2 - file1 je starší než file2file1 -ef file2 - file1 je jiný název pro file2 - (symbolický odkaz nebo pevný odkaz )
Řetězcové argumenty
v Perl, tyto části jsou obráceny: ekv
je operátor řetězce a ==
je číselný operátor atd. pro ostatní.
-n String1 - délka proměnné String1 je nenulová-z String1 - délka proměnné String1 je 0 (nula) String1 = String2 - proměnné String1 a String2 jsou shodnéString1 != String2 - proměnné String1 a String2 nejsou totožné String1 - true, pokud proměnná String1 není nulový řetězec
Počet argumentů
Celé číslo1 -ekv Integer2 - proměnné Integer1 a Integer2 jsou algebraicky rovnat se-ne - nerovná se-gt - větší než-ge - větší nebo rovné -lt - méně než-le - menší nebo rovné
Operátoři
test
argumenty lze kombinovat s následujícími operátory:
! - Unární operátor negace-A - Binární operátor AND-Ó - Binární operátor OR (-A
operátor má vyšší prioritu než-Ó
operátor)(Výraz) - Závorky pro seskupení musí být ukončeny zpětným lomítkem\
The -A
a -Ó
operátory jsou spolu se závorkami pro seskupení přípony XSI[4] a proto nejsou přenosné. V přenosných shell skriptech lze stejného efektu dosáhnout připojením více vyvolání test
společně s &&
a ||
operátory a závorky.
Stav ukončení
Tento příkaz vrací následující hodnoty ukončení:
0 - Parametr Výraz je pravdivý1 - Parametr Expression je nepravdivý nebo chybí>1 - Vyskytla se chyba
Příklady
1. Chcete-li otestovat, zda soubor neexistuje nebo prázdný, zadejte:
-li test ! -s "$1" pak echo $1 neexistuje nebo je prázdný. fi
Pokud soubor určený prvním pozičním parametrem procedury prostředí, $ 1, neexistuje nebo má velikost 0, zobrazí testovací příkaz zprávu. Pokud $ 1 existuje a má velikost větší než 0, testovací příkaz nic nezobrazí.
Poznámka: Mezi funkcí -s a názvem souboru musí být mezera.
Uvozovky kolem $ 1 zajišťují, že test funguje správně, i když je hodnota $ 1 nulový řetězec. Pokud jsou uvozovky vynechány a $ 1 je prázdný řetězec, zobrazí testovací příkaz chybovou zprávu:
test: očekává se argument.
2. Chcete-li provést komplexní srovnání, zadejte:
-li [ "$#" -lt 2 ] || ! [ -E "$1" ] pak výstup fi
Pokud je proceduře shellu dán méně než dva poziční parametry nebo soubor určený $ 1 neexistuje, procedura shellu je ukončena. Speciální proměnná prostředí $ # představuje počet pozičních parametrů zadaných na příkazovém řádku, který spouští tuto proceduru prostředí.
Viz také
Reference
- ^ http://www.in-ulm.de/~mascheck/bourne/#system3 Bourne Shell se mění se systémem III
- ^ test (1) - coreutils - Debian buster - Debian Manpages
- ^ IBM. „IBM System i verze 7.2 Programování Qshell“ (PDF). Citováno 2020-09-05.
- ^ IEEE Std 1003.1, 2004, dokumentace pro
test
Další čtení
- Robbins, Arnold; Nelson H. F. Beebe (2005). „6.2.4 Zkušební příkaz“. Klasické skriptování prostředí: Skryté příkazy, které odemknou sílu systému Unix. O'Reilly Media, Inc. str. 120–128. ISBN 978-0-596-55526-9.
- Ian Shields (20. února 2007). „Linux tip: Bash test a srovnávací funkce“. IBM DeveloperWorks.
- William Shotts (2013). "27 - Řízení toku: Větvení s if". Linuxový příkazový řádek. Žádný lis na škrob. 381–390. ISBN 978-1-59327-389-7. (stažení zdarma)
externí odkazy
- Specifikace Single UNIX, Vydání 7 od Otevřená skupina - Referenční příručka a nástroje,
- Linux Příkazy uživatele Manuál –
- Plán 9 Programátorská příručka, svazek 1 –