Next: Kommentarar i skall-program
Up: Skall-programmering
Previous: Skall-programmering
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: Kommentarar i skall-program
Up: Skall-programmering
Previous: Skall-programmering
Trond.Kandal@itea.ntnu.no