Aufzucht und Hege von Shell-Scripts: Eingaben prüfen

Jede Eingabe ist böse?

Ja, eigentlich schon. Auf jeden Fall immer dann, wenn sie aus einer Quelle kommt, die Ihr nicht vollständig unter Kontrolle habt (Eingabe kann dabei direkter Input auf der Kommandozeile, Daten aus einer Datei, die Ausgabe eines Kommandos, ... sein). Die Eingabe kann leer sein, sie kann einen unerwarteten Wert haben (z. B. Buchstaben statt eines erwarteten numerischen Werts), sie kann numerische Überläufe verursachen oder ein Format haben, das unerwartet interpretiert wird (Zahlen mit führender Null werden von einigen Kommandos z. B. als Oktalwerte angesehen, bei denen Werte wie 09 einen Fehler verursachen), sie kann Kontrollzeichen beinhalten, ...

Oberster Grundsatz sollte also sein, dass alle Eingaben aus nicht vertrauenswürdigen Quellen vor ihrer Benutzung geprüft werden. Dazu bieten sich z. B. folgende Werkzeuge an (kleine Auswahl, es gibt - fast - unendlich viele Möglichkeiten). Näheres zu den Kommandos findet Ihr wo? Bingo: in den Manual-Pages!

Lasst bei der Eingabevalidierung Eure Fantasie spielen! Wollt Ihr prüfen, ob eine Eingabe ein bekannter Benutzer oder eine vorhandene Gruppe ist? getent. Wollt Ihr wissen, ob da eine existierende Prozess-ID eingegeben wurde? ps. Ist das Dateisystem, welches ausgehängt werden soll, auch wirklich gemountet? mount oder df. Ist ein eingegebenes Datum auch ein Datum? date - die Liste lässt sich erweitern, bis das Laden dieser Seite die Geduld auch des größten Phlegmatikers erschöpft %-/