Ein Frage-Anwort-Spiel auf der Konsole verleitet zu leicht zu Fehleingaben durch den Benutzer. Und um diese im
Programm zu behandeln, bedarf es oft umständlicher Programmkonstrukte...
Viel besser wäre es z.B. dem Nutzer durch Vorgabe eines Menüs die möglichen Optionen eines
Programmes zu präsentieren. Die Lösung liegt in der Realisierung von
Dialogboxen mit Hilfe von dialog
.
Das Kommando dialog
wird durch Optionen gesteuert:
Option | Wirkung |
--checklist
|
Dient der Auswahl von Optionen. |
--clear
|
Löscht bei Beendigung des Dialogs den Bildschirm (der allerdings
blau bleibt, ein Aufruf von setterm -clear hilft).
|
--infobox
|
Eine Nachricht wird eingeblendet. |
--inputbox
|
Dient der Eingabe von Daten. |
--menu
|
Dient zur Auswahl von einem aus mehreren Menüpunkten. |
--msgbox
|
Wie --infobox , allerdings muss der Nutzer die
Nachricht mit "OK" bestätigen.
|
--textbox
|
Eine als Parameter übergebene Datei wird angezeigt. Kann diese nicht vollständig im Fenster dargestellt werden, werden Scrollbars eingefügt. |
--title
|
In der ersten Zeile des Dialogs wird ein Titel angezeigt. |
--yesno
|
Ein Ja/Nein-Dialog erscheint. |
Als Beispiel wollen wir das vorherige Shellskript zum Löschen von Dateien durch die Verwendung von Dialogboxen verbessern.
Das Löschen der Dateien aus Ein komplexes Beispiel erfolgt nun menügesteuert.
#!/bin/sh
|
Zeile | Bemerkung |
1-6 |
Ein
Der Dialog erhält einen Titel (Zeile 2), Höhe (10 Zeilen), Breite (70 Spalten) und Anzahl der Einträge (4) werden vereinbart.
Die vier Schalter werden beschriftet (Zeilen 3-6), die letzte Box wird vorbelegt (on / Abbildung).
Bei Dialogende muss die Auswahl explitzit gespeichert werden. Eine Umlenkung in eine temporäre Datei ist sinnvoll. Als
(hoffentlich) eindeutiger Name dient die PID des Shellskripts (
Waren alle Optionen gesetzt, steht in der Datei "1" "2" "3" "4" |
7, 8 |
Die Optionen werden aus der temporären Datei ausgelesen, in der Variable
options gespeichert und die temporäre Datei gelöscht.
|
9-16 |
Analog zum vorherigen Abschnitt. Um ein Muster wie "1" zu
vergleichen, müssen die Doppelanführungszeichen als solche
gekennzeichnet werden.
|
17 | Im interaktiven Fall soll die Abfrage vor dem Löschen als Ja/Nein-Dialog erfolgen. |
18 | Abfrage, ob Datei gelöscht werden soll. |
19, 20 | Der yesno-Dialog kehrt mit Status "0" zurück, falls der yes-Button gewählt wurde; Löschen! |
23 | Das Löschen einer jeden Datei wird kurz in einer Infobox angezeigt. |
26 | Der Bildschirm wird gelöscht (bleibt sonst blau). |