Dieses Howto soll mit einfachen Beispielen, das Arbeiten mit Shell-Skripten erklären. Unter Linux ist die bash das mächtigste Werkzeug. Mit Hilfe von Skripten lässt sich nahezu jede Aufgabe bewältigen.
2006-02-28: Erste Version. Unvollständig. Nur mal ein Anfang, damit ich es nicht vergesse, dass ich so etwas schreiben wollte.
Bitte erweitert und verbessert das Dokument und wenn ihr mögt, könnt' ihr euch unter dem Punkt 'Autoren' eintragen.
Um ein Skript zu schreiben nutzt man am besten einen Editor seiner Wahl für Linux (z.B vi, nano oder pico). vi ist hier die beste Lösung, da keine Zeilenumbrüche generiert werden.
# vi skript01.sh #!/bin/bash echo "Hello world!" exit 0
Der Klassiker. Die erste Zeile sagt der Shell mit welchem Programm das Skript interpretiert werden soll. In diesem Fall ist es die bash. Aber es können auch andere Shells verwendet werden (z.B sh,ksh oder csh). Wobei sich der Syntax bei den einzelnen Shells geringfügig unterscheidet.
Das Skript muss nun ausführbar gemacht werden und dann einfach mal starten.
# chmod u+x skript01.sh # ./skript01.sh Hello world!
Gleiches Skript wie eben. Nur diesmal wird mit Aufruf des Skripts eine Variable an das Skript übergeben.
# vi skript02.sh #!/bin/sh echo "Hello $1!" exit 0 ./skript02.sh Claus Hello Claus!
Alles klar soweit, oder? „$1“ ist der erste angegebene Parameter. Es können bis zu 9 Parameter dem Skript mitgegeben werden (in der bash sogar ein paar mehr). Diese würden dann $1 $2 $3 usw. lauten.
#!/bin/sh echo "Hello $1 $2 $3 $4!" exit 0 # ./skript02.sh claus heini burschi anton Hello claus heini burschi anton!
Um die Anzahl an Parametern ausgeben zu lassen, mit der das Skript ausgeführt wurde gibt es die Variable '#'
#!/bin/sh echo "Es wurden $# Parameter angegeben" exit 0 # ./skript03.sh claus heini burschi anton Es wurden 4 Parameter angegeben
Ausgabe aller Parameter funktioniert analog mit der Variable '*'. Also:
#!/bin/sh echo "Es wurden die Parameter \"$*\" angegeben" exit 0 # ./skript03.sh claus heini burschi anton Es wurden die Parameter "claus heini burschi anton" angegeben
Auch in der Shell ist es möglich Variablen zu definieren und zu nutzen.
#!/bin/bash variable="gibmichaus" echo $variable exit 0
Auch Arrays lassen sich definieren.
#!/bin/bash
array=("wert 1" "wert 2" "wert 3" "wert 4")
echo ${array[*]}
exit 0
Statt des '*' kann man die Zahl des Feldes angeben. die '0' würde dann 'wert 1' ausgeben. Bei Arrays beginnt der erste „Speicherplatz“ immer beim Index 0.
Genauso kann man nun den Wert an der dritten Stelle ändern:
#!/bin/bash
array=("wert 1" "wert 2" "wert 3" "wert 4")
array[2]="neuer wert 3"
echo ${array[*]}
exit 0
Und auch der Lattenzaun kann hier wieder verwendet werden. Das '#' gibt hier die Anzahl der Elemente im Array aus:
#!/bin/bash
array=("wert 1" "wert 2" "wert 3" "wert 4")
echo ${#array[*]}
exit 0
#!/bin/bash
if [ "$1" = "true" ]; then
echo "Hallo. Der Parameter ist $1"
else
echo "Hallo. Der Parameter ist nicht $1"
fi
Claus Malter