Sämtliche Bearbeitungsschritte sind in einem SHELL-Skript (uebung3.sh) mittels der entsprechenden UNIX-Befehle durchzuführen. Pseudocode-Stellen sind innerhalb <<< und >>> zu finden und zusätzlich fett markiert. Pseudocode ist durch Shell-Code zu ersetzen:
Definiere die erforderlichen
Umgebungsvariablen:
#SHELL-Variablen
<<< Setze
die Variable QUELL_PFAD auf den Wert des ersten Parameters, mit dem
das Skript aufgerufen wird >>>
<<<
Setze die Variable SUCH_ZEICHEN auf den Wert des zweiten
Parameters, mit dem das Skript aufgerufen wird >>>
<<<
Setze die Variable FUNKTION auf den Wert des dritten
Parameters, mit dem das Skript aufgerufen wird >>>
<<<
Setze die Variable PARAMETER_ANZAHL auf die Anzahl der
Parameter, mit dem das Skript aufgerufen wird >>>
<<<
Setze die Variable LISTE_DER_PARAMETER auf die Werte der
Parameter, mit denen das Skript aufgerufen wird >>>
<<<
Setze die Variable INFO auf nachfolgenden Wert:
"Folgendes
Kommando wurde aufgerufen: "$0" "$LISTE_DER_PARAMETER
>>>
<<< Setze die Variable
PRE_ZEICHEN auf den Wert "Pre_" >>>
<<<
Setze die Variable POST_ZEICHEN auf den Wert "_post"
>>>
<<< Setze die Variable ERGEBNIS auf
den Wert "ergebnis.txt" >>>
<<<
Setze die Variable ZIEL_VERZEICHNIS auf den Wert "kopie"
>>>
<<< Definiere die Funktion mit
dem Namen finden >>>
<<< Beginn der
Funktion finden>>>
# Setze die Variable PWD auf den Wert
des aktuellen Verzeichnisses
PWD=`pwd`
<<< Gib
den Wert der Variablen PWD auf dem Bildschirm aus >>>
#Suche
ab dem Wert der Variablen QUELL_PFAD alle Dateien.
#Übergebe
diese Dateien mittels der Pipe dem Kommando grep, um jene Dateien zu
finden,
#welche im Pfadnamen die Zeichenkette $SUCH_ZEICHEN
enthalten.
#Das Ergebnis soll in der Datei $PWD/$ERGEBNIS
festgehalten werden
find $QUELL_PFAD -name "*" -print |
grep $SUCH_ZEICHEN > $PWD/$ERGEBNIS
<<< Wenn
das letzte Kommando das gewünschte Suchzeichen nicht gefunden
hat >>>
<<< dann
>>>
<<< Gib den Text "Keine Datei
gefunden" auf dem Bildschirm aus >>>
<<<
Beende das Skript mit dem Return-Wert 1 >>>
<<<
Ende von "Wenn" >>>
<<<
Ende der Funktion finden >>>
<<<
Definiere die Funktion mit dem Namen suchen >>>
<<<
Beginn der Funktion suchen >>>
<<<
Rufe die Funktion finden auf >>>
<<<
Gib den Text "Folgende Dateien wurden gefunden"
auf dem Bildschirm aus >>>
<<< Gib
den Inhalt der Datei $PWD/$ERGEBNIS auf dem Bildschirm aus. Verwende
dabei aber zusätzlich das Kommando more,
damit nicht mehr
als ein Seite Informationen auf dem Bildschirm erscheint
>>>
<<< Gib den Text "Das Kommando
wurde erfolgreich beendet" auf dem Bildschirm aus >>>
<<<
Ende der Funktion suchen >>>
<<<
Definiere die Funktion mit dem Namen umbenennen
>>>
<<< Beginn der Funktion umbenennen
>>>
<<< Wechsle in das Verzeichnis
$QUELL_PFAD >>>
<<< Erstelle
eine Liste jener Dateien des aktuellen Verzeichnisses in der Datei
./$ERGEBNIS, welche im Dateinamen die Zeichen *$SUCH_ZEICHEN*
enthalten >>>
#"Für" die
Variable DATEI, welche als Werte alle Zeilenwerte der Datei
./$ERGEBNIS annehmen kann ...
for DATEI in `cat
./$ERGEBNIS`
do
<<< Benenne die Datei $DATEI
in $PRE_ZEICHEN$DATEI$POST_ZEICHEN um >>>
done
<<<
Setze die Variable PWD auf den Wert des aktuellen
Verzeichnisses >>>
<<< Gib den
Wert der Variablen PWD auf dem Bildschirm aus >>>
#
Zeige die Dateien $PWD/* auf dem Bildschirm aus.
# Sorge dafür,
dass nicht mehr als eine Seite "auf einmal" angezeigt wird
ls $PWD/* | more
<<< Gib den Text "das
Kommando wurde erfolgreich beendet´"auf dem Bildschirm
aus >>>
<<< Ende der Funktion
umbenennen >>>
<<< Definiere
die Funktion mit dem Namen kopieren >>>
<<<
Beginn der Funktion kopieren >>>
<<<
Rufe die Funktion finden auf >>>
<<<
Wenn die Datei $PWD/$ZIEL_VERZEICHNIS existiert
>>>
<<< dann >>>
<<<
Gib den Text "Verzeichnis "$ZIEL_VERZEICHNIS" ist
bereits vorhanden" auf dem Bildschirm aus >>>
<<<
andernfalls >>>
<<<
Gib den Text "Verzeichnis "$ZIEL_VERZEICHNIS" wurde
neu erstellt" auf dem Bildschirm aus
>>>
<<< Erzeuge das Verzeichnis
$ZIEL_VERZEICHNIS >>>
<<< Ende
von "Wenn" >>>
<<< "Für"
die Variable DATEI, welche als Werte alle Zeilenwerte der Datei
$PWD/$ERGEBNIS annehmen kann ...>>>
<<<
Beginn der "For"-Schleife >>>
<<<
Kopiere die Datei $DATEI in das Verzeichnis
./$ZIEL_VERZEICHNIS >>>
<<< Ende
der "For"-Schleife >>>
#Finde alle
Dateien im Verzeichnis $PWD/$ZIEL_VERZEICHNIS.
# Sorge dafür,
dass nicht mehr als eine Seite "auf einmal" angezeigt wird
find $PWD/$ZIEL_VERZEICHNIS -name "*" -print |
more
<<< Gib den Text "das Kommando wurde
erfolgreich beendet" >> auf dem Bildschirm aus
>>>
<<< Ende der Funktion kopieren
>>>
<<< Definiere die
Funktion mit dem Namen main >>>
<<<
Beginn der Funktion main >>>
<<< Gib
den Inhalt der Variablen INFO auf dem Bildschirm aus
>>>
<<< Wenn der Wert der Variablen
PARAMETER_ANZAHL kleiner als 3 ist >>>
<<<
dann >>>
<<< Gib den
Text $PARAMETER_ANZAHL" Parameter sind zu wenig" auf dem
Bildschirm aus >>>
<<< Beende
das Skript mit dem Returnwert 1 >>>
<<<
Ende von "Wenn" >>>
<<<
Beginn einer case-Konstruktion für die Variable
FUNKTION >>>
<<< Im Falle,
dass die Variable FUNKTION den Wert suchen enhält >>>
<<<
Rufe die Funktion suchen auf >>>
<<<
Ende von "Im Fall, dass" >>>
<<<
Im Falle, dass die Variable FUNKTION den Wert kopieren
enhält >>>
<<< Rufe die
Funktion kopieren auf >>>
<<< Ende
von "Im Fall, dass" >>>
<<<
Im Falle, dass die Variable FUNKTION den Wert umbenennen
enhält >>>
<<< Rufe die
Funktion umbenennen auf >>>
<<< Ende
von "Im Fall, dass" >>>
<<<
Im Falle, dass die Variable FUNKTION andere Werte enhält
>>>
<<< Gib den Text "Die
gewuenschte Funktion wird nicht unterstuetzt" auf dem
Bildschirm aus >>>
<<< Ende
von "Im Fall, dass" >>>
<<<
Ende der Case-Konstruktion >>>
<<<
Ende der Funktion main >>>
<<<
Rufe die Funktion main auf >>>