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:
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', ...
|
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.
|
Niektore standardne (predefinovane) premenne shellu
PWD | Path to Working Directory (meno sucasneho pracovneho adresara)
|
HOME | Meno domovskeho adresara
|
PATH | Zoznam ciest kde sa nachadzaju vykonatelne programy
|
USER | Meno prihlaseneho uzivatela (moje meno)
|
DISPLAY | X windows server na ktorom sa zobrazia graficke aplikacie.
|
PS1 | Prompt 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 "nasobic.sh", ktory vypise prompt "Zadaj cislo:",
nacita cislo zo standardneho vstupu a vypise dane cislo zvysene o
jedna a potom vynasobene cislom 11.
|