next up previous contents index
Next: Kommentarar i skall-program Up: Skall-programmering Previous: Skall-programmering

Lagre skall-kommandoar i filar

Alle kommandoar som blir eksekvert frå ein terminal kan lagrast i ei fil og bli eksekvert derifrå. Skallet gjer at fila vert omgjort til standard inn istaden for terminalen. Ein måte å utføre kommandoar i ei fil er å gje filnamnet som argument til sh .

zevs% cat kommando.fila
echo $LOGNAME
pwd
zevs% sh kommando.fila
trondk
/home/zevs/ifi/trondk
zevs%
Kommandoane er eksekvert med kommandoen sh kommando.fila, og resultatet kjem til standard ut. Ein annan måte å eksekvere kommandoen på er :  

zevs% chmod u+x kommando.fila
zevs% kommando.fila
trondk
/home/zevs/ifi/trondk
zevs%
Dersom fila har kjøyre rettighet treng ein ikkje gje filnamnet som argument til eit sub-skall. Innloggingsskallet finn ut at det er eit skall-program og utfører eit eige sub-skall for å fullføre kommandoen. Eit skall-program kan eksekvere akkurat som eit binært program og det er vanlegvis ikkje nokon grunn til å skille mellom dei to typane. Eit skall-program som nemnt tidlegare blir utført i eit sub-skall derfor vil dei aksjonane som blir utført i skall-programmet berre påverke sub-skallet. Derfor er det alltid nyttig å definere skall-variable som har same levetid som skall-programmet.

zevs% cat kommando.fila
DIR=`pwd`
echo $DIR
zevs% kommando.fila
/home/zevs/ifi/trondk
zevs% echo $DIR
DIR: Undefined variable.
zevs%
På same måte vil ikkje kommandoar i skall-program fortsette etter at skall-programmet er ferdig.

zevs% cat kommando.fila
pwd
echo Forandrar katalog ...
cd /tmp
pwd
zevs% kommando.fila
/home/zevs/ifi/trondk
Forandrar katalog ...
/tmp
zevs% pwd
/home/zevs/ifi/trondk
zevs%
Ein kan forandre katalog inne i skall-programmet, men operasjonen påverkar berre skall-programmet, og ikkje resten av sesjonen. Sidan systemet ikkje gjer forskjell på binære program og skall-program, kan ein inkludere skall-program som kommandoar inne andre skall-program. Husk alltid på eksportere lokale variable dersom du vil at dei skal brukast i andre sub-program eller skall-program.
next up previous contents index
Next: Kommentarar i skall-program Up: Skall-programmering Previous: Skall-programmering
Trond.Kandal@itea.ntnu.no