for var in liste do donehar csh operatoren foreach , som vert terminert med end:
61 csh:zevs{trondk} > foreach var ( hallo hadi )
? echo $var
? end
hallo
hadi
62 csh:zevs{trondk} >
Det er fleire ting som er verdt å merke seg i dette
eksemplet; for det første, lista er omgitt av parentesar
( ein kan sjølvsagt bruke utdata frå kommandoar
istaden for ei konkret liste); for det andre, csh sin
ekvivalente til PS2 er ? ( eit
spørsmålstegn ); og for det tredje, der er ingen
do...done kommando.
Ein kan utføre ein test og eksekvere kommandoar dersom
testen er sann, med if...then...endif . Ordet
then må stå på same linje som if,
og testen må vere omgitt av parentesar.
62 csh:zevs{trondk} > cat eksisterer-fil.csh
if ( -e $1 ) then
echo fila $1 eksisterer
else
echo fila $1 eksisterer ikkje
endif
63 csh:zevs{trondk} > csh -f eksisterer-fil.csh /etc/passwd
fila /etc/passwd eksisterer
64 csh:zevs{trondk} >
Det eksisterer fleire test operatorar i tilleg til -e,
som returnerer sant dersom ei fil eksisterer. Ei komplett
liste kan ein finne man-sidene for csh.
Nokre av dei mest vanlege operatorane er -r, som
returnerer sant dersom ein har lese-aksess til ei fil;
-f, som returnerer sant dersom ei fil er ei ordinær
fil; og -d, som returnerer sant dersom ei fil er ein
katalog. Ein kan også samanlikne numeriske verdiar, og
bruke vanlege aritmetriske operatorar:
64 csh:zevs{trondk} > cat nummer-test.csh
set x=1
if ( $x - 1 ) then
echo SANT eller ulik null
else
echo USANT eller lik null
endif
65 csh:zevs{trondk} > csh -f nummer-test.csh
USANT eller lik null
66 csh:zevs{trondk} >
Som vi ser så støttar csh numeriske operasjonar
utan ein expr kommando.
På den andre sida støttar ikkje csh operatoren
` ( på engelsk grave )
if { kommando parametre ... } then
Som vi ser så erstattar krøll-parantesane dei vanlege
parantesane i eit slikt uttrykk.
C-skallet understøttar også enkle aritmetriske
operasjoner i skall-program. I tilleg til set
som vi kjenner frå ksh brukar csh også
operatoren @ ( krøll-alfa ) for å utføre
ein operasjon på ein variabel. Denne operatoren
fungerer ikkje på kommando-linja.
66 csh:zevs{trondk} > cat operator.csh
set x=5
echo $x
@ x++
echo $x
@ x+=32
echo $x
@ = $x + 32
echo $x
67 csh:zevs{trondk} > csh -f operator.csh
5
6
38
70
68 csh:zevs{trondk} >
Pass alltid på å ha mellomrom mellom elementa i
tilordningsuttrykk,- på same måte som med
expr. Husk også på at @-operatoren
ikkje verkar for interaktive skall.
C-skallet sitt fleirvalgsuttrykk er switch ...
endsw . Merk kvart valg med case, og terminer kvart
valg med breaksw.
68 csh:zevs{trondk} > cat skall-program.csh
switch ( $1 )
case 1 :
echo "Hallo"
breaksw
case 2 :
echo "Hadi"
breaksw
default :
echo "God dag"
breaksw
endsw
69 csh:zevs{trondk} > csh -f skall-program.csh 25
God Dag
70 csh:zevs{trondk} > csh -f skall-program.csh 1
Hallo
71 csh:zevs{trondk} >
Parantesane etter switch er påkrevde, og uttrykket kan
også vere uttrykk som evaluerer til ein streng. Dersom
uttrykket er ein streng, vil kvart valg bli samanlikna med
strengen, og tilhøyrande vil bli utførde heilt til
kommandoen breaksw , som vil bryte ut av switch.
Dersom ingen av dei aktuelle valg slær til, vil
default bli utført.
Løkker kan ein lage med while ... end . Her må
ein også legge testen mellom parentesar.
71 csh:zevs{trondk} > cat while-test.csh
set x=1
while ( $x < 5 )
echo $x
@ x++
end
72 csh:zevs{trondk} > csh -f while-test.csh
1
2
3
4
73 csh:zevs{trondk} >
Endå finst fleire operatorar og måtar å
programmere på under csh,- men eg vil ikkje
gjennomgå meir i denne omgang.