Konzola

Skripte

Skripte so besedilne datoteke, ki vsebujejo ukaze. Ko izvedemo skripto, se izvedejo tudi ukazi znotraj nje. Tipična končnica skripte je sh.

Ker si želimo, da bi skripte vsebovale tudi nekaj logike, uporabljamo skriptni jezik. Najbolj razširjen sta bash in sh. Ker je teh jezikov več, moramo sistemu povedati, katerega ukaze smo uporabili. Prva vrstica skripte zato vsebuje t.i. shebang ukaz, ki nam pove pot do skriptnega jezika.

#!/bin/sh

Kljub temu, da vrstice, ki se začno z #, v skriptah pomenijo komentar, ta vrstica računalniku pove, naj uporabi /bin/sh. Takšno skripto lahko v konzoli zaženemo kot /bin/sh skripta.sh, vendar, če ji nastavimo izvršljivi bit x, potem jo je moč zagnati iz konzole krajše kot ./skripta.sh.

Izvršljivi bit postavimo z ukazom chmod o+x skripta.sh.

Omejitve

Čeprav si lahko s skriptami olajšamo marsikatero dolgovezno akrobacijo v konzoli, imajo skriptni jeziki svoje pomanjkivosti. Ti jeziki niso sposobni rešiti težkih računov, razbijanja nizov ali dostopu do podatkovne baze. V ta namen si olajšamo delo z namenskimi programi npr. bc, cut, grep itd.

Ker skriptni jezik razširja nekatere ukaze, sploh tiste z zvezdico *, moramo biti pri tem pazljivi. Tako npr. grep ^r.*t /etc/passwd ne bo našlo besedice root, zato moramo ta ukaz zapisati kot grep ^r.\*t /etc/passwd ali kot grep '^r.*t' /etc/passwd, s čimer ohranimo pomen oziroma nalogo zvezdice.

Parametri in posebne spremenljivke

Skriptam lahko podamo parametre, s čimer lahko spremenjamo njihovo notranje delovanje (če so napisane tako).

#!/bin/sh
echo Prvi parameter: $1
echo Tretji parameter: $3

Če zgornjo skriptno shranimo kot poglej.sh, dodamo izvršljivi bit chmod +x poglej.sh in poženemo kot ./poglej.sh sem tja nazaj, potem dobimo naslednji odziv.

Prvi parameter: sem
Tretji parameter: nazaj

Ko postane število parametrov dvomestno število, potem moramo število pisati v dva zavita oklepaja, kot naprimer ${10}.

Spremenljivka $# vsebuje število skripti podanih parametrov. Če je $# enako nič, potem je prvi parameter $1 prazen. Spremenljivka $@ vsebuje vse parametre. Spremenljivka $0 hrani ime skripte kot datoteke (oziroma tudi pot do datoteke), ki vsebuje to spremenljivko. Spremenljivka $$ hrani PID skripte, ki se trenutno izvaja, in $? izhodno vrednost predhodnje pognanega programa. Tipično ničla pomeni, da se je predhodnje pognani program uspešno zaključil.

Logika za usmerjanje