26.02.2014 Aufrufe

LinuxUser Optimale Skripte (Vorschau)

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!