test (Unix)
test
je program nachádzajúci sa v Unixových systémoch. Slúži na vyhodnotenie výrazu, ktorý je v danom formáte odovzdaný ako argument na príkazovom riadku.[1][2] Často sa používa pri vyhodnocovaní podmienok v shelloch (napr. bash). Pomocou tohto príkazu možno overovať vlastnosti súborov alebo textových reťazcov.
test | |
Základné informácie | |
---|---|
Vývojár | rôzni open-source a komerční vývojári |
Vyvinutý v | C |
Operačný systém | Unix, Unix-like, Plan 9, IBM i |
Licencia | coreutils: GPLv3+ Plan 9: MIT License |
Pozri aj Informačný portál |
Synonymom tohto príkazu je [
(počiatočná hranatá zátvorka), ktorá ale vyžaduje ukončenie pomocou ]
(koncovú hranatú zátvorku).[3] Pri skriptovaní v unixových shelloch sa namiesto test vyraz
viac používa ekvivalentný variant [ vyraz ]
, ktorý sa viac podobá programátorskému zápisu.
Opis
upraviťPríkaz test
v Unixe vyhodnocuje parameter vyraz
. V novších implementáciach shellu je priamo zabudovaným príkazom, ale stále existujú i externé verzie.[3] V druhej podobe tohto príkazu musia byť [ ]
(hranaté zátvorky) obklopené medzerami (pretože [
je program a shelly kompatibilné s POSIXom vyžadujú medzeru medzi názvom programu a jeho argumentami). V prípade C shellu je nutné testovať názvy súborov. Substitúcia v názvoch súborov (glob) spôsobí ukončenie shellového skriptu.[chýba zdroj]
Príkaz test
by sa nemal zamieňať za [[
, ktorý sa objavil v ksh88. [[
nie je príkaz, ale súčasťou syntaxe ksh88 a neaplikuje substitúcie v názvoch súborov vo výrazoch s globom.[4]
Verziu test
prítomnú v GNU coreutils napísali Kevin Braunsdorf a Matthew Bradburn.[5] Tento príkaz je prítomný ako samostatný balík pre Microsoft Windows ako súčasť kolekcie UnxUtils natívnych Win32 portov bežných GNU Unix-like utilít.[6] Príkaz test
bol takisto portnutý pre operačný systém IBM i.[7]
Syntax
upraviťPríkaz test
sa používa jedným z nasledovných spôsobov:[3]
test vyraz [ vyraz ] [[ vyraz ]]
Prepínače
upraviťPrepínače, s ktorými je možné volať príkaz test
:
-e NazovSuboru – vráti hodnotu 0 (pravda) ak súbor NazovSuboru existuje
Ďalšie prepínače potom rozširujú funkcionalitu prepínača -e
v zmysle, že vracajú hodnotu 0 (pravda), ak súbor existuje a zároveň spĺňa niektoré ďalšie kritérium:[3][8]
-b NazovSuboru – NazovSuboru je blokový špeciálny súbor -c NazovSuboru – NazovSuboru je znakový špeciálny súbor -d NazovSuboru – NazovSuboru je adresár -f NazovSuboru – NazovSuboru je bežný súbor -g NazovSuboru – NazovSuboru má nastavený Group ID príznak -h NazovSuboru – NazovSuboru je symbolický odkaz -k NazovSuboru – NazovSuboru má nastavený sticky bit príznak -L NazovSuboru – NazovSuboru je symbolický odkaz -p NazovSuboru – NazovSuboru je pomenované zreťazenie (named pipe, FIFO) -r NazovSuboru – NazovSuboru je čitateľný aktuálnym procesom -s NazovSuboru – NazovSuboru má nenulovú veľkosť -t DeskriptorSuboru – DeskriptorSuboru je otvorený a asociovaný s terminálom -u NazovSuboru – NazovSuboru má nastavený User ID príznak -w NazovSuboru – NazovSuboru je zapisovateľný aktuálnym procesom -x NazovSuboru – NazovSuboru má nastavený príznak spúšťateľného súboru
Tento zoznam nie je kompletný.
Návratová hodnota
upraviťPodľa toho, či program prebehol správne, vracia jednu z troch návratových hodnôt:[3]
0
, ak je hodnotavyraz
pravdivá1
, ak je hodnotavyraz
nepravdivá alebo úplne chýba>1
, ak došlo k nejakej chybe
Príklad
upraviťNa overenie toho, či súbor neexistuje alebo je prázdny, možno použiť nasledujúce príkazy:
if test ! -s "$1"
then
echo $1 neexistuje alebo je prázdny.
fi
Ak súbor, ktorý je špecifikovaný prvým pozičným parametrom shellového procesu, $1, neexistuje alebo je jeho veľkosť nulová, vypíše sa uvedená správa. Ak parameter $1 existuje a má nenulovú veľkosť, nezobrazí sa žiadna správa. V príkaze musí byť medzera medzi -s
a názvom súboru.
Parameter $1 je v úvodzovkách, aby sa zaručilo, že test
bude fungovať správne, i keď $1 je prázdny textový reťazec. Ak sa nepoužijú úvodzovky a $1 je prázdny textový reťazec, príkaz test
zobrazí chybovú hlášku:
test: argument expected.
Referencie
upraviť- ↑ Linux test Command Tutorial for Beginners (with Examples) [online]. HowtoForge, [cit. 2023-09-15]. Dostupné online. (po anglicky)
- ↑ Linux Test Command Information and Examples [online]. www.computerhope.com, [cit. 2023-09-15]. Dostupné online. (po anglicky)
- ↑ a b c d e test Man Page - Linux - SS64.com [online]. ss64.com, [cit. 2023-09-15]. Dostupné online.
- ↑ ksh88 - man pages section 1: User Commands [online]. docs.oracle.com, [cit. 2023-09-15]. Dostupné online.
- ↑ test(1) — coreutils — Debian buster — Debian Manpages
- ↑ Native Win32 ports of some GNU utilities [online]. . Dostupné online.
- ↑ IBM. IBM System i Version 7.2 Programming Qshell [online]. . Dostupné online. (po anglicky)
- ↑ test man page [online]. linuxcommand.org, [cit. 2023-09-15]. Dostupné online.
Zdroje
upraviťTento článok je čiastočný alebo úplný preklad článkov test (Unix) na českej Wikipédii a test (Unix) na anglickej Wikipédii.