Hlavní stránka

Popis scriptu

Letošní verze tuox shellu (1997/98) by měla podporovat zpracovávání scriptů. Script (textový soubor) se před spuštěním načte jako posloupnost příkazů, přičemž proběhne syntaktická kontrola příkazů (shodný počet např. FOR a ENDFOR, správné vnořování cyklů). Pokud je vše v pořádku provede se přeložení scriptu do mezikódu, jinak se vypíší příslušná chybová hlášení (viz. Seznam chybových hlášení). Po přeložení do mezikódu dojde ke spuštění scriptu. Pro správnou interpretaci scriptu je nutné dodržovat syntaxi příkazů specifikovanou v části Seznam a syntaxe příkazů scriptu.

První možností vytvoření scriptu je napsat jej v externím textovém editoru (např. VI) a uložený textový soubor poté spustit jako script v shellu. Druhou možností by mělo být psaní scriptu přímo v příkazovém řádku shellu.

Obecné poznámky k interpretaci skriptu

Před příkazem ve skriptu může být libovolný počet mezer (jsou ignorovány). Řádek komentáře se začíná symbolem # (při interpretaci se opět ignoruje). Klíčová slova příkazů skriptu nejsou "case sensitive", ale zbytek (názvy proměnných, ...) ano.

Seznam a syntaxe příkazů scriptu

 SET <proměnná> = <hodnota>  nastaví lokální proměnnou na zadanou hodnotu
 pokud neexistuje proměnná z daným identifikátorem, vytvoří se
 IF (<logický výraz>)
   příkazy
 [ELSE
   příkazy]
 ENDIF
 v sekci 'příkazy' musí být každý příkaz na novém řádku
 FOR <proměnná> IN <seznam>
   příkazy
 ENDFOR
 v sekci 'příkazy' musí být každý příkaz na novém řádku
 WHILE (<logický výraz>)
   příkazy
 ENDWHILE
 v sekci 'příkazy' musí být každý příkaz na novém řádku
 ECHO [-n] <argument>  volitelný parametr -n determinuje přechod na nový řádek
 SETENV <systémová proměnná> = <hodnota>  nastaví hodnotu proměnné environmentu
 READ <proměnná>  načte ze standartního vstupu hodnotu proměnné
 pokud neexistuje proměnná z daným identifikátorem, vytvoří se
 SHIFT  posune argumenty příkazového řádku o jeden vlevo
 CD <cesta>  pokud existuje cesta změní akt. adresář
 PWD  vypíše aktuální adresář

Struktura logického výrazu:

  člen1   logický_operátor   člen2
člen1, člen2 ... identifikátor proměnné,konstanta (řetězec v úvozovkách)
Pokud člen1,člen2 jsou identifikátory proměnných pak interpret se pokusí převést hodnoty proměnných na čísla, jinak se porovnává lexikograficky. V případě, že se pokoušíme porovnávat řetězcovou proměnnou s číselnou konstantou nastane chyba. Porovnávat lze pouze konstanty stejného typu.


logické operátory význam v C
-eq = =
-ne !=
-gt >
-lt <
-ge >=
-le <=

Specifikace seznamu (příkaz FOR)

Seznam specifikujeme buď výčtem:
  #(člen1[,člen2,...])
nebo intervalem:
  člen1..člen2
člen1, člen2 ... identifikátor proměnné(u intervalu pouze číselné), konstanta

Specifikace argumentu

konstanta (např. 13, "hello world")
identifikátor proměnné začínající $




Argumenty příkazového řádku

  Na počet argumentů se odkazujeme pomocí $?, na jednotlivé argumenty $n,
  kde n je číslo označující pořadí argumentu



Seznam chybových hlášení

Chybové hlášení Význam
Crossing structure found ! Došlo ke křížení dvou složených příkazů
Unexpected end of file ! Byl nalezen neúplný příkaz (např. neukončený IF)
Unknown command used: Byl použit neznámý příkaz
Error in IF section found ! Uvnitř příkazu IF došlo k chybě
Error in FOR section found ! Uvnitř příkazu FOR došlo k chybě
Error in WHILE section found ! Uvnitř příkazu WHILE došlo k chybě
Out of memory ! Málo paměti
Script file not found Nebyl nalezen soubor skriptu
Syntax error in SET command! Syntaktická chyba v příkazu SET
Syntax error in IF command! Syntaktická chyba v příkazu IF
Syntax error in FOR command! Syntaktická chyba v příkazu FOR
Syntax error in WHILE command! Syntaktická chyba v příkazu WHILE
Syntax error in ECHO command! Syntaktická chyba v příkazu ECHO
Syntax error in SETENV command! Syntaktická chyba v příkazu SETENV
Syntax error in READ command! Syntaktická chyba v příkazu READ
Syntax error in ELSE command! Syntaktická chyba v příkazu ELSE
Syntax error in SHIFT command! Syntaktická chyba v příkazu SHIFT
Syntax error in CD command! Syntaktická chyba v příkazu CD
Syntax error in PWD command! Syntaktická chyba v příkazu PWD
Syntax error in pipe! Chybná syntaxe při použití roury
Error in redirection! Chyba při přesměrování