test (Unix)
| 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 |
|
| |
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.
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ť | upraviť zdroj]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ť | upraviť zdroj]Príkaz test sa používa jedným z nasledovných spôsobov:[3]
test vyraz [ vyraz ] [[ vyraz ]]
Prepínače
[upraviť | upraviť zdroj]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ť | upraviť zdroj]Podľa toho, či program prebehol správne, vracia jednu z troch návratových hodnôt:[3]
0, ak je hodnotavyrazpravdivá1, ak je hodnotavyraznepravdivá alebo úplne chýba>1, ak došlo k nejakej chybe
Príklad
[upraviť | upraviť zdroj]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ť | upraviť zdroj]- ↑ 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)
- 1 2 3 4 5 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ť | upraviť zdroj]Tento článok je čiastočný alebo úplný preklad článkov test (Unix) na českej Wikipédii a test (Unix) na anglickej Wikipédii.