Übung 4:

  1. Schauen Sie sich das Shellskript aus Übung 2 an und probieren Sie es aus. Machen Sie sich die Funktionsweise klar, und kommentieren Sie das Skript so, daß ein Programmierer ohne Kenntnisse der Sprache "Shell" es versteht.
    Hinweis: Kommentare beginnen mit # und gehen bis zum Ende der Zeile.
  2. Schreiben Sie einen Aufruf (oder ein Skript), der (bzw. das) Dateien "stapelweise" umbenennt, z.B. alle .c-Dateien in .cc-Dateien (so ein Spezialfall reicht). Dazu gibt es mehrere Möglichkeiten, z.B. mit sed, basename oder den Ersetzungsmöglichkeiten der Shell. Verwenden Sie mindestens die beiden letzten (wenn Sie es kennen, auch sed). Lesen Sie dazu die Hilfe von basename und in der Manpage der bash über die Funktionsweise von Textersetzung (Abschnitt "Parameter Expansion").
  3. Ändern Sie das Skript der vorigen Aufgabe so, daß man beim Aufruf angeben kann, was die Erweiterungen in Quell- und Zielnamen sind.
  4. Schreiben Sie eine Funktion, die all ihre Argumente zeilenweise ausgibt und anschließend alle Argumente nacheinander als Kommandos ausfürt.
    Hinweis: Sie können ein Shellskript in der laufenden Shell mit dem source-Kommando ausführen lassen. Die im Skript definierten Funktionen sind dann in der aufrufenden Shell bekannt. Außerdem können Sie die Definition einer existierenden Funktion mit dem type-Kommando ausgeben.
  5. Quoting: Geben Sie die folgenden Zeichenketten (so wie sie dastehen) mit printf '%s\n' ... aus; probieren Sie dabei jedes Mal doppelte und einfache Anführungszeichen und Backslashes für den ...-Teil aus, um die Stärken und Schwächen der Escape-Methoden für die jeweiligen Zeichen kennenzulernen: Beispiel: Die Aufrufe printf '%s\n' "a'b\""c, printf '%s\n' 'a'\''b"'c printf '%s\n' a\'b\"c geben alle a'b"c (und einen Zeilenumbruch) aus.