Übungen zu ``Shellprogrammierung''


Sommersemester 97

Blatt 8 vom: 16.6.97
letzter Abgabetermin: 23.6.97 (vor 10.00 Uhr)

Aufgabe 1 (1 Punkt)

Machen Sie sich mit dem Kommando eval vertraut, und betrachten Sie den nachfolgenden Auszug aus einer Shell-Sitzung. Erklären Sie die Ausgabe des echo's?

$ x='$y'
$ y=z
$ z=666
$ eval eval $x=7
$ echo x=$x y=$y z=$z

Wo ist das Problem im nächsten Beispiel und warum?

$ a='echo `date`'
$ a='eval echo `$a`'
$ $a

Aufgabe 2 (1 Punkt)

Welche Kommandos können nicht und welche Kommandos müssen in der Shell eingebaut sein? Nennen Sie jeweils wenigstens zwei, und begründen Sie Ihre Antwort.

Aufgabe 3 (3 Punkte)

Machen Sie sich mit dem Kommando trap vertraut. Wozu dient das Kommando?

Wie kann man in der Shell Signale ignorieren, mit einer bestimmten Aktion verbinden oder auf einen default-Wert setzen? Wie bekommen Sie die Information, für welche Signalnummer das Signal-Handling nicht der default-Reaktion entspricht?

Schreiben Sie ein Shellskript, das Ihnen alle Signale in Klartext ausgibt, die Sie über Control-Tasten erzeugen können.

Machen Sie sich das nachfolgende Shellskript klar.

#!/bin/sh
trap 'trap '' 0 1 2 3 15; echo What?' 0 1 2 3 15
sleep 10;
exit 0

Machen Sie sich die nachfolgenden Shellskripte klar.

Skript 1:

#!/bin/sh
trap ':' 1 2 3 15
sleep 10;

Skript 2:

#!/bin/sh
trap '' 1 2 3 15
sleep 10;

Stellen Sie für das jeweilige Skript graphisch dar, was bei Eintreffen eines Signals passiert.

Aufgabe 4 (1 Punkt)

Machen Sie sich mit dem Kommando set vertraut. Was machen die Optionen ±n, ±v, ±x, ±t, ±f und ±a zu set? Probieren Sie einige der Optionen aus, und überlegen Sie sich, wann man diese Optionen benutzen würde.

Aufgabe 5 (4 Punkte)

Schreiben Sie ein Shellskript, das auf seiner Kommandozeile Dateien aus dem aktuellen Katalog als Argumente bekommt und deren Information auf der Standardausgabe ausgibt, wobei die Ausgabe dem nachfolgenden Format genügen soll. Sie können davon ausgehen, daß die Dateien keine binäre Informationen enthalten und daß die letzten Zeilen jeweils mit einem Newline abgeschlossen sind.

-rw-r--r--   1 bernd    inform       1567 Jun 12 12:51 blatt.txt
     89     287    1567 blatt.txt
.Bl 8 "16.6.97" "23.6.97 (vor 10.00 Uhr)"
.Af 0
Machen Sie sich mit dem Kommando
.I eval
vertraut und betrachten Sie den folgenden
...
-rwxr-xr-x   1 bernd    inform        460 Jun 12 12:51 makefile
     37      78     460 makefile
#
# makefile fuer die Uebungsblatter
# sp SS 97
# bk
...

Schreiben Sie ein Shellskript, das aus einer Datei, die dem obigen Format genügt, die Dateien mit den Daten und den Zugriffsrechten restauriert. Sie können von der Konsistenz der Eingabedatei ausgehen.