Login


 
Newsletter
Werbung

Mo, 1. Januar 2001, 00:00

Shell-Workshop, Teil 5

Logische Verknüpfungen

In Teil 3 dieses Workshops haben wir die if-Kontrollstruktur kennengelernt. In der Bash gibt es zusätzlich aber noch die Operatoren && und ||. Man schreibt diese zwischen zwei Kommandos. Bei && wird das zweite Kommando nur ausgeführt, wenn das erste erfolgreich war (Weiter unten werde ich erläutern, wie sich "Erfolg" genau definiert). Bei || ist es umgekehrt: Nur wenn das erste Kommando erfolglos war, wird das zweite ausgeführt:

cd bilder && ls -l *.png

Hierdurch würden alle PNG-Bilder aufgelistet, wenn in das Verzeichnis "bilder" gewechselt werden konnte. Würde beispielsweise ein solches Verzeichnis nicht existieren, würde das ls-Kommando nicht ausgeführt.

test -e .xsession && test -e .xinitrc || ln -s .xsession
.xinitrc

Hier würde mit "ln -s" ein symbolischer Link von ".xinitrc" auf ".xsession" erstellt, wenn ".xinitrc" nicht existiert, ".xsession" aber schon. Die Datei ".xinitrc" wird übrigens abgearbeitet, wenn X11 per "startx" aufgerufen wird und ".xsession", wenn man einen grafischen Login wie xdm oder kdm verwendet.

Einfacher scripten durch Funktionen

Bild 4: Parameter werden durch spezielle Variablen angesprochen

Wolfgang

Bild 4: Parameter werden durch spezielle Variablen angesprochen

Auch in Shellscripts kommt es vor, dass eine Aufgabe an unterschiedlichen Stellen ausgeführt werden muss. Um nicht den Code an alle betreffenden Stellen kopieren zu müssen und darüber hinaus bei einer Änderung alle Vorkommen davon manuell anpassen zu müssen, verwendet man Funktionen. Durch eine Funktion werden mehrere Anweisungen unter einem Namen zusammengefasst. Einer Funktion können allerdings auch Werte (sog. Parameter) übergeben werden, wie einem Kommando. Genaugenommen sind Funktionen schließlich auch Kommandos. Innerhalb der Funktion können diese Parameter wie folgt verwendet werden: Der erste Parameter kann durch $1 angesprochen werden, der zweite durch $2 usw.

Ein Beispiel dazu sehen Sie auf Bild 4. Hier wird die Funktion "show_info" definiert und anschließend mit dem Parameter "/etc/fstab" aufgerufen, wodurch die beiden Befehle "ls -l" und "file" jeweils auf $1 (in diesem Fall also "/etc/fstab"), angewendet werden. (Warum dieses Beispiel fehleranfällig ist und was daran anders sein sollte, erfahren Sie am Ende dieses Artikels.)

Eingebaute Kommandos - Der feine Unterschied

Wärend die Hauptaufgabe jeder Shell zweifellos immer noch ist, andere Programme aufzurufen, gibt es auch einige Kommandos, die gar nicht als Programme realisiert werden können, sondern in die Shell selbst eingebaut sein müssen.

Dabei handelt es sich um all diejenigen Kommandos, die sich auf die Bash selbst auswirken. Beispielsweise wird mit "cd" das Arbeitsverzeichnis der Shell gewechselt. Bei flüchtigem Hinsehen scheint dies keinen Unterschied zu machen, doch es gibt Situtationen, in denen dieser kleine Unterschied wichtig ist. Wenn Sie beispielsweise die oben besprochene Funktion nicht "show_info" nennen wollen, sondern "file", könnten sie dies so machen:

Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung