Spustenie uzivatelskeho shell scriptu

  sh <meno suboru> <parametre> 
alebo ak chceme script debugovat:
  sh -x <meno suboru> <parametre> 
Shell script je jednoducho textovy subor do ktoreho si ulozime postupnost prikazov. Spustenim shell scriptu sa tieto prikazy zacnu vykonavat akoby sme ich pisali interaktivne v prikazovom riadku. Ak naprikald subor ahoj.sh obsahuje riadky:

	echo hello
	echo world

Tak prikaz
sh ahoj.sh
vypise
hello
world

Initializacny subor shellu

Shell je aj program s ktorym komunikujete v prikazovom riadku. Pri spusteni takehoto shell-u sa zvycajne najskor zinterpretuje initializacny subor, tento subor je v domovskom adresari uzivatela a vola sa (podla shellu): '.profile' alebo '.bashrc' alebo '.cshrc' alebo 'bash_profile', ... Priklad mojho suboru .bashrc.

Premenne shellu

premenne sa pouzivaju bez deklaracie, vsetky premenne su interpretovane ako retazce. Nepriradene premenne obsahuju prazdny retazec.

xx=value Priradenie hodnoty value do premennej xx
read xx Nacita riadok z klavesnice a priradi ho do premennej xx. Ak nacita znak "koniec suboru", tak vrati chybovy navratovy kod.
${xx} Hodnota premennej xx.
$n Hodnota n-teho parametra.
$* Hodnoty vsetkych parametrov.
$! PID poslednej ulohy spustenej na pozadi.
$$ PID prave beziaceho (tohto) shellu.
$? Navratovy kod posledne vykonaneho prikazu.

Niektore standardne (predefinovane) premenne shellu

PWDPath to Working Directory (meno sucasneho pracovneho adresara)
HOMEMeno domovskeho adresara
PATHZoznam ciest kde sa nachadzaju vykonatelne programy
USERMeno prihlaseneho uzivatela (moje meno)
DISPLAYX windows server na ktorom sa zobrazia graficke aplikacie.
PS1Prompt String, kod retazca, ktory shell vypise ked ocakava prikaz z konzoly. (zvycajne > zobacik)

Pomocne prikazy casto pouzivane v shell scriptoch

Prikaz Popis
expr expr vyhodnoti expr a vypise na standardny vystup vysledok ako string, pouziva sa na implementovanie trivialnej aritmetiky.
Jednotlive symboly v expr su zlozene z parametrov a mozu byt napriklad:
integer + integer plus
integer - integer minus
integer * integer krat
integer / integer deleno
integer % integer modulo
( expr ) zatvorkovanie podvyrazu
( expr ) zatvorkovanie podvyrazu
length retazec dlzka retazca
substr retazec integer-od integer-dlzka podretazec

Nasledovne logicke operatory sa vyhodnotie na cislo 1 alebo 0 (reprezentujuce pravdu alebo nepravdu)
integer < integer mensi
integer <= integer mensi alebo rovny
integer > integer vacsi
integer >= integer vacsi alebo rovny
integer = integer rovnost
integer != integer nerovnost
integer & integer a sucasne
integer | integer alebo

bc Cita svoj standardny vstup, na vstupe dostane vyraz (v normalnom zapise), ktory vyhodnoti a vysledok vypise (pohodlna ale neefektivna alternativa k expr). Program bc pouziva celociselnu aritmetiku s lubovolnou presnostou.




Cvicenia





1.) Priradte do premennej TOTO retazec "ahoj ja som toto" a vypiste hodnotu TOTO pomocou prikazu echo.


2.) Vypocitajte pomocou prikazu expr hodnotu vyrazu 2 + 2.


3.) Vypocitajte pomocou prikazu expr hodnotu vyrazu 2 * 2.


4.) Vypocitajte pomocou prikazu bc hodnotu vyrazu 2 * 2.


5.) Priradte do premennej TOTO cislo 10 a napiste prikazovy riadok, ktory zdvojnasobi hodnotu premennej TOTO. T.j. po jeho vykonavaniach bude TOTO nadobudat hodnoty 20, 40, 80, ...


6.) Napiste shell script s menom checho, ktory vypise svoje tri parametre (podobne ako prikaz echo, ale staci ak vypise tri parametre).


7.) Napiste shell script "subor.sh", ktory dostane ako parameter meno suboru a vypise toto meno bez koncovky.


8.) Napiste shell script "nasobic.sh", ktory vypise prompt "Zadaj cislo:", nacita cislo zo standardneho vstupu a vypise dane cislo zvysene o jedna a potom vynasobene cislom 11.