UNIX-SHELL-Übung 3

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:

  1. 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 >>>