Übungen zu ``Shellprogrammierung''
Sommersemester 97
Blatt 7 vom: 9.6.97
letzter Abgabetermin: 16.6.97 (vor 10.00 Uhr)
Was versteht man unter dem Begriff verankerte Suche?
Extrahieren Sie aus der Datei /home/sp/Blatt/Blatt7/Src/search die Zeilen, die eine der folgenden Anforderungen erfüllen:
1. die Zeilen, welche mit einem a beginnen und mit einem a enden, 2. die Zeilen, welche mit dem gleichen Zeichen beginnen und enden, 3. die Zeilen, die vier gleiche Kleinbuchstaben enthalten, 4. alle Palindrome, die aus fünf Buchstaben bestehen (kein Palindrom ist: a12321x), 5. ein Wort enthalten, das mit einem r bzw. dem Text Opa beginnt, 6. der Nachname Meyer (Maier, Meier, Mayer ...) in einer Variation der Schreibweise enthalten ist, 7. alle Zeilen, die eines der Wörter eins, zwei, zzwei, eeins enthalten, 8. ein Wort enthalten, das nicht mit einem ^, U, $ beginnt, 9. ein Wort enthalten, das nicht mit einem ^, U, $ endet.
Zur Lösung jeder Teilaufgabe darf nur ein [ef]?grep verwendet werden.
Wozu dienen innerhalb eines Shell-Skripts die Variablen $1 ... $9, $#, $@, $*, $-, $?, $! und $$, und was macht das Kommando shift?
Schreiben Sie ein Shell-Skript, mit dem Sie die unterschiedlichen Möglichkeiten in der Verwendung von $* und $@ herausstellen.
Was ist der einzige richtige Ansatz, wenn Sie alle Kommandozeilen-Argumente in einer for-Schleife abarbeiten wollen? Bedenken Sie, daß es mehr als neun Argumente geben kann.
Schreiben Sie ein Shellskript, mit dem Sie zeigen können, worin sich '{ ... }' und '( ... )' in ihrer Funktionalität innerhalb eines Shellskripts unterscheiden.
Schreiben Sie ein Kommando, das die Argumente der Kommandozeile abarbeitet. Sollte das Kommando fehlerhaft aufgerufen werden, muß es einen entprechenden Hinweis geben und terminieren. Das Kommando muß eine Kommandozeile folgender Art
cmd [-h] [-l dump_level] [-d day] [-m] [-f] [-i]
verarbeiten können.
Schreiben Sie ein Shell-Skript, mit dem Sie alle Möglichkeiten der parameter substitution (Kapitel 6.7) austesten können.
Wie übergeben Sie in einem Shell-Skript an ein anderes Shell-Skript alle Argumente, falls welche angegeben worden sind? Sie dürfen zur Lösung des Problems keine Kontrollstruktur verwenden.
isolde Blatt7 822 uname -a NeXT Mach isolde 4.1 ? i386 isolde Blatt7 823 set `uname -a` isolde Blatt7 824
lyra bernd 201 which echo /usr/local/gnu/bin/echo lyra bernd 202 type echo echo is a shell builtin
isolde Blatt7 749 [ -f blatt.txt ] && echo found found isolde Blatt7 750 [ -f blatt.txt ] || echo found
Für Menschen mit Lust zum Tüfteln hier noch eine kleine Quiz-Aufgabe:
Mit welchem regulären Ausdruck kann man aus einer Datei alle Zeilen mit einem C-Kommentar herausfiltern?
Aus der C-Sprachbeschreibung stammt: Ein Kommentar wird durch die Zeichen /* eingeleitet und durch die Zeichen */ beendet. Kommentare dürfen nicht verschachtelt werden.
Damit sind
/* dkjfdkl */ /***dkj//we** /fdkl */ /* kj /* dlkf */
korrekte und
/* ererer /* ererer */ ereer /888*/ /* ererer rer */ eree**/
unkorrekte Kommentare.