Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Dialog<br />
Schwerpunkt<br />
blenwert. In Listing 3 erhielten Sie also<br />
eine fünfzeilige Ausgabe, stünden im<br />
String der Variablen c Leerzeichen anstelle<br />
der Bindestriche.<br />
Beim Aufbau von Menüs gehen Sie<br />
wie in Listing 4 vor. Besteht die Auswahlliste<br />
nur aus wenigen Punkten, verwenslash“),<br />
damit diese keinen Einfluss auf<br />
das Ergebnis haben. Die beiden Methoden<br />
aus Zeile 4 und Zeile 7 erzeugen das<br />
gleiche Ergebnis.<br />
Mit der Option ‐i Text in Kombination<br />
mit ‐e (Readline-Support) geben Sie<br />
dem Benutzer schon eine Eingabe am<br />
Prompt vor. Etwas komfortabler klappt<br />
das mit dem externen Programm Readpreprompt<br />
û. Für den korrekten Einsatz<br />
führen Sie das Kommando in einer Subshell<br />
aus (Listing 2, Zeile 3). Das Tool liefert<br />
das Ergebnis der Abfrage auf die<br />
Standardausgabe. Mit diesem Befehl gestalten<br />
Sie leicht Masken für Datenbankanwendungen.<br />
Mit Format<br />
Der eingebaute Befehl echo bietet nur<br />
wenig Einfluss auf das Format der Ausgabe.<br />
Um Zahlenwerte exakt positioniert<br />
auf den Bildschirm zu schreiben,<br />
hilft Ihnen das der Programmiersprache<br />
C entliehene printf. Bei der Ausgabe<br />
von Zahlenwerten mit Nachkommastellen<br />
nimmt Ihnen der Befehl das Aufoder<br />
Abrunden ab, zudem berücksichtigt<br />
er die Spracheinstellungen der Shell.<br />
Der grundsätzliche Aufbau von Printf-<br />
Kommandos folgt dem Aufbau printf<br />
"%Format" Daten. Die wichtigsten Anweisungen<br />
zum Formatieren finden Sie<br />
in der Tabelle Mit Format. Der Befehl unterscheidet<br />
zwischen Komma und Punkt<br />
als Dezimaltrenner. Im Ernstfall passen<br />
Sie die Variable LC_NUMERIC oder LANG<br />
mittels set und unset innerhalb des<br />
Skripts an.<br />
Einfacher bringen Sie jedoch mittels<br />
tr die Eingabedaten gleich auf das richtige<br />
Format. Dies integrieren Sie bei Bedarf<br />
direkt in die Anweisung (Listing 3,<br />
Beispiel 2). Die Anweisungen für Printf<br />
schließen Sie immer mit einem Newline<br />
(\n) ab. In einigen Fällen erlaubt der Befehl<br />
auch Tabulatoren. Die Beispiele in<br />
Listing 3 zeigen die wichtigsten Funktionen,<br />
Abbildung 1 die Ergebnisse.<br />
Beachten Sie eine Besonderheit bei<br />
der Ausgabe von Zeichenketten<br />
(Strings): Das Leerzeichen dient normalerweise<br />
als Trenner. Das macht jedes<br />
Wort einer Zeile zu einem eigenen Varia-<br />
1 Mittels printf formatieren Sie die<br />
Ausgaben in der gewünschten Form.<br />
Listing 1<br />
01 #! /bin/sh<br />
02 echo "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"<br />
03 echo "echo ‐n \"Eingabe: \";read a"<br />
04 echo ‐n "Eingabe: ";read a<br />
05 echo "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"<br />
06 echo "read ‐p \"Eingabe: \" a"<br />
07 read ‐p "Eingabe: " a<br />
08 echo "‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"<br />
Alternativen<br />
Dialog-Befehl Xdialog Zenity Kdialog<br />
‐‐yesno ‐‐yesno ‐‐question ‐‐yesno<br />
‐‐msgbox ‐‐msgbox ‐‐warning oder<br />
‐‐msgbox<br />
‐‐info<br />
‐‐infobox ‐‐infobox – ‐‐passivepopup<br />
‐‐textbox ‐‐textbox ‐‐textinfo ‐‐textbox<br />
‐‐tailbox ‐‐tailbox – –<br />
‐‐pause – – –<br />
‐‐gauge ‐‐gauge ‐‐progress ‐‐progressbar<br />
‐‐form – – –<br />
‐‐inputmenu<br />
‐‐2inputsbox/<br />
– –<br />
‐‐3inputsbox<br />
‐‐calendar ‐‐calendar ‐‐calendar ‐‐calendar<br />
‐‐timebox ‐‐timebox – –<br />
2 Ein einfaches Menü, das Sie über die<br />
vorangestellten Ziffern steuern.<br />
Listing 2<br />
‐‐inputbox ‐‐inputbox ‐‐entry ‐‐inputbox<br />
‐‐editbox ‐‐editbox ‐‐textinfo ‐‐textinputbox<br />
‐‐dselect ‐‐dselect ‐‐file‐selection ‐‐getexistingdirectory<br />
‐‐fselect ‐‐fselect ‐‐file‐selection ‐‐getopenfilename/<br />
‐‐getsavefilename<br />
‐‐checklist ‐‐checklist ‐‐list ‐‐checklist<br />
‐‐radiolist ‐‐radiolist ‐‐list ‐‐radiolist<br />
‐‐menu ‐‐menubox ‐‐ list ‐‐menu<br />
#! /bin/sh<br />
a="Alter Wert"<br />
a=$(readpreprompt "Eingabe: "<br />
"$a")<br />
echo $a<br />
03.2014 www.linux-user.de<br />
31