Wichtig ist, dass Sie als Feldbezeichner ein zusammenhängendes Wort ohne Leerzeichen verwenden. Bei Datenbanken bietet sich dazu der entsprechende Feldname an. Auf diese Weise fällt es leicht, eine SQL-Anweisung mit den passenden Variablen zu versehen.
Eine komfortable Möglichkeit zur Eingabe eines Datums bietet die Funktion --calendar. Beim Aufruf sehen Sie den aktuellen Monat, in der linken Spalte die Kalenderwoche. Mit den Cursor- und Bild-auf/ab-Tasten wechseln Sie zu einem anderen Datum. Mit dem Betätigen der Schaltfläche OK gibt das Widget den vorher markierten Wert aus.
Um eine Variable zu belegen, lenken Sie wieder über --stdout die Ausgabe um. Weil Dialog die Teile des Datums mit einem Schrägstrich unterteilt, ersetzen Sie mittels tr diese durch den hierzulande üblichen Punkt. Das Listing 12 zeigt, wie ein entsprechendes Skript aufgebaut ist. Ein Bild dazu finden Sie in der Tabelle “Fenstertypen”.
Listing 12
#! /bin/sh a=$(dialog --title "Titel" --backtitle "Hintergrundtitel" --stdout --calendar "TEXT" 0 0 | tr \/ .) dialog --title "Titel" --backtitle "Hintergrundtitel" --msgbox "gewähltes Datum: $a " 0 0
Zeitwerte erfassen Sie mittels --timebox. Um den Eingabewert zu übernehmen, schalten Sie wieder --stdout vor. Das Fenster zeigt die Zeit des Aufrufs an. Wollen Sie abweichende Werte eingeben, springen Sie mit den Pfeiltasten in die Eingabefelder und geben andere Daten ein.
Beliebige alphanumerische Werte erfassen Sie in einer Eingabebox (--inputbox). Das Belegen einer Variablen innerhalb eines Skripts geschieht mittels vorangestelltem --stdout. Sie haben die Möglichkeit, eine editierbare Vorgabe zu übergeben. Der Vorgang passt in eine Zeile:
a=$(dialog --title "Titel" --backtitle "Hintergrundtitel" --stdout --inputbox "EINGABEÜBERSCHRIFT" 0 0 "VORGABE")
Kleinere Textdateien bearbeiten Sie bei Bedarf in einem Mini-Editor (--editbox). Dabei übergeben Sie als Argument den Namen der Datei. Existiert diese nicht, legen Sie sie mit touch an. Den eingegebenen oder geänderten Text schreiben Sie in eine andere Datei zurück oder hängen ihn an diese an.
Geben Sie für das Fenster die Höhe und Breite an, damit das innere Fenster nicht die Überschrift verdrängt. Wiederum müssen Sie --stdout vorschalten, damit Ihre Eingaben nicht auf der Standard-Fehlerausgabe landen. Sie benötigen nur eine einzige Zeile Shell-Code:
dialog --title "Titel" --backtitle "Hintergrundtitel" --stdout --ok-label "Speichern" --editbox text.txt 20 75 > neu.txt
Das Auswählen von Verzeichnis und Dateiname im Skript erledigen Sie mit --dselect und --fselect. Meist kommen beide in Kombination zum Einsatz. Es empfiehlt sich, für unkundige Benutzer einen Hinweis zum Bedienkonzept anzubringen. Die Auswahl eines Verzeichnisses, das sich auf der gleichen Ebene befindet wie die Vorgabe, erfolgt zunächst über die Pfeiltasten sowie anschließendes Drücken der Leertaste.
Mit --fselect wählen Sie im linken Fensterteil die Pfadangabe, drücken zwei Mal die Leertaste, und erledigen in der rechten Hälfte die Auswahl der Datei. Zwischen den Bereichen wechseln Sie über den Tabulator, innerhalb eines Bereiches navigieren Sie mit den Pfeiltasten.
Das untere Feld erlaubt die manuelle Eingabe. Wenn sich der Cursor darin befindet, springen Sie einfach mit dem Löschen der rechts stehenden Pfadangaben in die nächsthöhere Verzeichnishierarchie zurück (Abbildung 6). Ein Beispiel für die Auswahl von Verzeichnis und Datei finden Sie in Listing 13.
Listing 13
#!/bin/sh
a=$(echo $HOME)
while true
do
a=$(dialog --title "Titel" --backtitle "Hintergrundtitel" --stdout --fselect $a 0 0)
dialog --title "Titel" --backtitle "Hintergrundtitel" --defaultno --yesno "$a Übernehmen" 0 0
if [ $? -eq 0 ]; then
break
fi
done
Eine Mehrfachauswahl bauen Sie mit --checklist auf. Als Ergebnis erhalten Sie das oder die Kennzeichen (Marke) des jeweiligen Eintrags, welche in Anführungszeichen gefasst sind. Als Feldtrenner fungiert das Leerzeichen. Jedem Eintrag geben Sie den Status mit: on steht hier für markiert, off für nicht markiert.
Die Angaben für Höhe (Zeilen), Breite (Zeichen) und Auswahlhöhe (Zeilen) geben Sie vor. Der Wert für die Auswahlhöhe darf hierbei der tatsächlichen Zahl der Wahlmöglichkeiten gleichen. Passt nicht alles in das Fenster, so gibt es die Möglichkeit zu scrollen. Listing 14 zeigt den Code zusammen mit tr, welches die Anführungszeichen entfernt.
Listing 14
#!/bin/sh a=$(dialog --title "Titel" --backtitle "Hintergrundtitel" --stdout --checklist "AUSWAHLÜBERSCHRIFT" 10 40 3 MARKE-1 "INFO-1" on MARKE-2 "INFO-2" off MARKE-3 "INFO-3" on) a=$(echo $a | tr -d \")
Die Einfachauswahl baut sich genauso auf wie die Mehrfachauswahl. Sie verwenden den Fenstertyp --radiolist, setzen nur bei einem einzigen Eintrag den Status on, und erhalten den Marker-Wert ohne die Anführungszeichen. Über die Leertaste wählen Sie den entsprechenden Wert aus:






