First page Back Continue Last page Overview Text

Notes:


Vorhin hatten wir zwei Versionen von hsort vorgestellt. Die erste Version sortierte nach der ersten Zeile der Eingabedatei, während die zweite Version als zusätzliches Argument die Spalte bekam, nach der sortiert werden sollte. Außerdem wurde in der zweiten Version ein anderer Aufruf von sort eingesetzt, um die Zeilen numerisch zu sortieren.

Mit Hilfe einer Fallunterscheidung können wir die beiden Versionen zusammenfassen. Dabei nutzen wir aus, dass beide Versionen mit einer unterschiedlichen Anzahl von Argumenten arbeiten. Dazu können wir eine passende Fallunterscheidung schreiben.:

Wir hatten vorhin schon gesehen, dass sich mit Hilfe von $# die Anzahl der übergebenen Argumente feststellen lässt. Wenn der Benutzer das Skript nur mit einem Dateinamen aufruft,

> ./hsort3 ../planeten2.txt

ist dieser Wert 1. Genau das prüfen wir in dem if-Teil und wenn dies erfüllt ist, wird der gleiche Aufruf wie der ersten Version von hsort ausgeführt.

Wenn der Benutzer hingegen die zu sortierende Spalte als weiteren Parameter angibt

> ./hsort3 ../planeten2.txt 2

ist der Wert von $# 2 und der else-Teil der Fallunterscheidung wird ausgeführt. Dies entspricht der zweiten Version von hsort.

Übungsaufgabe 5.15.1

Insgesamt haben wir damit beide Versionen von hsort in einem Skript zusammengefasst. Probiert die obigen Beispiele einmal aus; das Skript steht bereits unter dem Pfad shell-skripte/hsort3.bash im Übungsverzeichnis.