Schleifen Der Kommandozeileninterpreter Bash Verwendung von Dialogboxen Inhalt Index


Ein komplexes Beispiel

Aufgabenstellung

Im Laufe der Zeit sammelt sich in einem Dateisystem so allerhand Schrott an, seien es Sicherungsdateien der Editoren (Endung ~) oder core-Files (Name core) abgestürzter Programme oder Objekt-Dateien übersetzter Programmmodule (Endung .o).

Es wäre sicherlich sinnvoll, ein Shellskript zu haben, was das Dateisystem von solchem Ballast befreit.

Also schreiben wir ein Programm mit folgenden Merkmalen:

Eine mögliche Lösung:

Das nachfolgende Shellprogramm löscht im aktuellen Verzeichnis einschließlich aller Unterverzeichnisse core-, Backup- und Objektdateien. Welche Dateien zu entfernen sind, kann in der Kommandozeile angegeben werden.

1    #!/bin/sh

2    object=
3    tilde=
4    core=
5    inter=

6    for i do
7       case "$i" in
8            -c ) core=core;;
9            -o ) object=.o;;
10           -t ) tilde=\~;;
11           -i ) inter=-i;;
12      esac
13   done

14   for i in $core $object $tilde; do
15      for x in $(find $(pwd) -name "*$i"); do
16         rm $inter $x
17      done
18   done

Erläuterungen

Zeile Bemerkung
1 # leitet normalerweise einen Kommentar ein, es sei denn, es folgt ein Ausrufezeichen. Hieran erkennt die Shell, dass die nachfolgenden Zeilen mit der angegebenen Shell auszuführen sind. So wird ein Shellprogramm portabel und kann auch unter einer anderen Shell aufgerufen werden.
2-5 Löschen der Variablen, um Konflikte mit gleichnamigen globalen Variablen zu vermeiden.
6, 13 Die Schleifenvariable i wird mit den Kommandozeilenparametern verbunden.
7-12 Es wird getestet, welche Optionen per Kommandozeile übergeben wurden. Die entsprechenden Variablen werden ggf. belegt.
14, 18 Die Schleifenvariable wird mit der Liste der gesetzten Optionen verbunden. Jede gesetzte Variable (Option) ist somit ein Element der Liste. Ist keine Variable (Option) gesetzt, terminiert die Schleife sofort (leere Liste).
15,17 Nach den entsprechenden Dateien (*core,*.o,*~) wird ausgehend vom aktuellen Pfad gesucht. Die Schleifenvariable x wird jeweils mit dem Ergebnis von find belegt.
16 Die Dateien werden gelöscht. Wurde die Option -i in der Kommandozeile übergeben, expandiert die Zeile zu rm -i <dateiname>.

Eine Auflistung der wichtigsten Shellkommandos findet man im Anhang.


Schleifen Der Kommandozeileninterpreter Bash Verwendung von Dialogboxen Inhalt Index