csh myscript
Im allgemeinen ist es aber praktischer, die Datei als ausführbar anzumelden (execute permission), mittels
chmod +x myscript
Das Shell-Script läßt sich dann wie ein "normales" (binäres) Kommando aufrufen:
myscript
Vorausgesetzt ist hierbei allerdings, daß das Betriebssystem das Script mit der richtigen Shell abarbeitet. Moderne Unix-Systeme prüfen zu diesem Zweck die erste Zeile. Für die csh sollte sie folgenden Inhalt haben:
#!/bin/csh
und für die tcsh entsprechend:
#!/bin/tcsh
Obwohl das Doppelkreuz normalerweise einen Kommentar einleitet, der vom System nicht weiter beachtet wird, erkennt es hier, daß die "csh" (mit absoluter Pfadangabe: /bin/csh) bzw. die "tcsh" eingesetzt werden soll.
#!/bin/csh # Einfaches Beispiel echo Hallo, Welt! echo Datum, Uhrzeit und Arbeitsverzeichnis: date pwd echo Uebergabe-Parameter: $*
Das vorstehende einfache Script enthält im wesentlichen normale Unix-Kommandos. Abgesehen von der ersten Zeile liegt die einzige Besonderheit im Platzhalter "$*", der für alle Kommandozeilen-Parameter steht.
#!/bin/csh # Variablen echo Uebergabeparameter: $* echo user ist: $USER echo shell ist: $SHELL echo Parameter 1 ist: $1 echo Prozedurname ist: $0 echo Prozessnummer ist: $$ echo Anzahl der Parameter ist: $#argv set a = 17.89 # mit oder ohne Luecken am = Zeichen echo a ist $a
if ( bedingung ) then
kommandos1
else kommandos2
endif
Anmerkungen: Die "bedingung" kann Operatoren enthalten, wie sie in der Programmiersprache C gebräuchlich sind. Im if-Konstrukt kann der "else"-Zweig entfallen, andererseits ist eine Erweiterung durch einen oder mehrere "else if"-Zweige möglich:
if ( bedingung1 ) then
kommandos1
else if ( bedingung2 ) then
kommandos2
else kommandos3
endif
#!/bin/csh # Interaktive Eingabe, if-Abfrage echo "Hallo, user, alles in Ordnung?" echo Ihre Antwort, n/j: set answer=($<) echo Ihre Antwort war: $answer # if ( $answer == "j" ) then if ( $answer != "n" ) then echo ja else echo nein endif
switch ( var )
muster1:
kommandos1
breaksw
muster2:
kommandos2
breaksw
default:
default-kommandos
endsw
Anmerkungen: Die einzelnen Fälle werden durch die
Angabe eines Musters festgelegt, "muster:" (auf separater Zeile), und durch
das Kommando "breaksw" abgeschlossen.
Die Marke "default:" wirkt als "default", sie deckt alle verbleibenden
Fälle ab; die Verwendung des default-Zweiges ist optional.
#!/bin/csh
# Interaktive Eingabe, Mehrfachentscheidung (switch)
echo "Alles in Ordnung?"
echo Ihre Antwort:
set answer=($<)
echo Ihre Antwort war: $answer
switch ( $answer )
case j*:
case J*:
case y*:
case Y*:
echo jawohl
breaksw
case n*:
case N*:
echo nein, ueberhaupt nicht!
breaksw
default:
echo das war wohl nichts
endsw
foreach i ( par1 par2 par3 ... ) kommandos endAnmerkungen: Die foreach-Schleife in der C-Shell unterscheidet sich von der for-Schleife in üblichen Programmiersprachen dadurch, daß nicht automatisch eine Laufzahl erzeugt wird. Der Schleifenvariablen werden sukzessive die Parameter zugewiesen, die in den runden Klammern stehen.
#!/bin/csh # Schleifen: foreach echo Uebergabeparameter: $* foreach i ($*) echo Hier steht: $i end
while ( bedingung ) kommandos endAnmerkung: Bei "while" erfolgt die Prüfung der Bedingung vor der Abarbeitung der Schleife. Die Regeln für die "bedingung" entsprechen den Ausführungen zu "if".)
#!/bin/csh # Schleifen: while # mit Erzeugung einer Laufzahl @ i=1 while ( $i <= 5 ) echo $i @ i = $i + 1 end