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árrôzni open-source a komerční vývojári
Vyvinutý vC
Operačný systémUnix, Unix-like, Plan 9, IBM i
Licenciacoreutils: 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.

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]

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 hodnota vyraz pravdivá
  • 1, ak je hodnota vyraz 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ť
  1. Linux test Command Tutorial for Beginners (with Examples) [online]. HowtoForge, [cit. 2023-09-15]. Dostupné online. (po anglicky)
  2. Linux Test Command Information and Examples [online]. www.computerhope.com, [cit. 2023-09-15]. Dostupné online. (po anglicky)
  3. a b c d e test Man Page - Linux - SS64.com [online]. ss64.com, [cit. 2023-09-15]. Dostupné online.
  4. ksh88 - man pages section 1: User Commands [online]. docs.oracle.com, [cit. 2023-09-15]. Dostupné online.
  5. test(1) — coreutils — Debian buster — Debian Manpages
  6. Native Win32 ports of some GNU utilities [online]. . Dostupné online.
  7. IBM. IBM System i Version 7.2 Programming Qshell [online]. . Dostupné online. (po anglicky)
  8. test man page [online]. linuxcommand.org, [cit. 2023-09-15]. Dostupné online.

Tento článok je čiastočný alebo úplný preklad článkov test (Unix) na českej Wikipédii a test (Unix) na anglickej Wikipédii.