Beispiel:
In der Datei zeige stehen 2 Zeilen:
~>more zeige
whoami
date
Die Datei zeige wurde für den User ausführbar gemacht mittels
~>chmod u+x zeige
Dann erfolgt der Aufruf mittels:
~>zeige
info49
09.01.02 15:30 CET
Auf Parameter wird im Script entsprechend der Position des Parameters mittels eines vorangestellten $-Zeichens zugegriffen (formale Parameter): Der erste Parameter hinter dem Kommandonamen heißt $1, der zweite $2 usw.
Alle Parameter zusammen werden mit $* angesprochen.
Die Zahl der Parameter steht auf $#.
Beispiel:
Script zeigeparameter:
echo
"Dieses Script wurde mit $# Parametern aufgerufen."
echo "Sie lauten: $*."
Ergebnis:
~>zeigeparameter
vier Parameter als Beispiel
Dieses Script wurde mit 4 Parametern aufgerufen.
Sie lauten: vier Parameter als Beispiel.
~>welche "Ein Parameter mit fünf Worten."
Dieses Script wurde mit 1 Parametern aufgerufen.
Sie lauten: Ein Parameter mit fünf Worten..
Durch vorangestelltes $-Zeichen wird sie verwendet.
Beispiel:
VARIABLE=17
echo "Geben Sie noch einen zweiten Wert ein:"
read WERT
echo "Auf der Variablen VARIABLE steht jetzt eine $VARIABLE"
echo "Auf der Variablen WERT steht jetzt der String $WERT"
Syntax:
then
Kommandofolge1
else
Kommandofolge2
fi
if Kommando
then
Kommandofolge1
fi
In der Regel wird als Kommando
hinter dem if das test-Kommando eingesetzt.
So kann zum Beispiel eine Überprüfung stattfinden, ob dem Script ein Parameter mitgegeben wurde:
if test "$1" = ""
then
echo "Der erste Parameter ist ein leerer String."
else
fi
Beispiele für Bedingungen beim Kommando test:
$# = n Anzahl der Parameter = n
s1 = s2 zwei Zeichenketten sind gleich
$? != 0 Exit Status des letzten Befehls ist ungleich 0
-d Hugo Hugo ist ein Directory
-f Hugo Hugo ist eine einfache Datei
-r file Datei existiert und Lesezugriff ist erlaubt.
Für numerische Ausdrücke (integer) sind folgende Vergleichsoperationen erlaubt (die Zeichen > und < sind ja schon für die Aus-/Eingabeumlenkung reserviert!):
-gt
(größer als), -ge (größer oder gleich),
-eq (gleich), -ne (ungleich),
-le (kleiner oder gleich), -lt (kleiner als)
while
[ Bedingung ]
do
... Befehle ...
done
Beispiel-Script:
ziffern
number=1
while test "$number" -lt 10
do
echo -e "$number\c"
((number=number+1)) # Rechenausdruck
done
echo
Ergebnis:
~>ziffern
123456789