Development/Tutorials/Shell Scripting with KDE Dialogs (de)
cleanup confusing sections and fix sections which contain a todo
Original - http://developer.kde.org/documentation/tutorials/kdialog-german/t1.html
Einleitung und Ausblick
Es gibt einige Missverständnisse, dass KDE nur eine grafische Umgebung sei. Richtig ist, dass KDE eine eigenständige Desktopumgebung ist, doch das Unix-Erbe der Befehlszeile und die Skriptfunktionen werden sehr wohl von KDE unterstützt. KDE Applikationen können von der Befehlszeile aus kontrolliert werden und Shellskripte können Gebrauch von KDE Elementen machen.
Für dieses Tutorial brauchen Sie ein wenig Basiswissen im Umgang mit der Befehlszeile und vom Shellskripting. Für effektives Shellskripting benötigen Sie solides Wissen über die Umgebung, doch das ist bei jeder Programmiersprache so. Wie auch immer, sie sollten in der Lage sein, den Sinn der Beispiele zu verstehen. Wenn sie fundiertes Wissen in Shellskripting haben werden Sie schnell die Schattenseite dieses Tutorials erkennen, denn einige Beispiele erscheinen redundant.
Dieses Tutorial setzt voraus, dass Sie die GNU bash shell benutzen oder etwas direkt kompatibles. Benutzer anderer Shells (speziell csh und Varianen) müssen die Beispiele vielleicht etwas ändern damit sie funktionieren.
Technik und Gebrauch von Shell Skripten variieren sehr stark. Manches Skript ist nur gedacht um vom System gestartet zu werden (z.B. cron job), andere jedoch sind richtige Programme, die vom normalen Benutzer verwendet werden. KDE bietet Funktionen die es Ihnen erlauben, einiges der KDE-Funktionalität in Shell-Skripten zu nutzen. Die kann Ihnen einiges an Arbeit ersparen und lässt Ihr Skript integriert wirken.
Als Beispiel denken Sie sich einen Passwortdialog. Wenn Sie eine Passworteingabe des Benutzer brauchen, können Sie sehr einfach einen Dialog aus Ihrem Skript heraus starten, der wie unten dargestellt erscheint.
Abb 1. Passwortdialog-Beispiel
Benutzung von kdialog
Der Schlüssel um die KDE Dialoge in Shell Skripten zu nutzen ist eine Anwendung namens kdialog. Um einen Passwort Dialog zu generieren, wie ihn Abb.1 in SektionEinleitung und Ausblick zeigt, nutzen sie die folgende Befehlszeile.
Beispiel 1. Passwortdialog
kdialog --password "Bitte geben Sie den Zugangscode des Servers ein:"
Lassen Sie uns den Code in Beispiel 1 etwas genauer anschauen. Die Argumente beim Aufruf vonkdialog werden benutzt, um den Typ des Dialoges und dessen Parameter festzulegen. Im Falle des Passwortdialoges benutzen Sie--password, um den Typ festzulegen, und danach den Parameter, welcher den darzustellenden Text übergibt.
Jedesmal, wenn Siekdialog (oder ein anderes Programm) aufrufen, erhalten Sie einen Rückgabewert. Dieser teilt Ihnen mit, ob das Programm korrekt arbeitete oder einen Fehler hatte. Sie können auf den Rückgabewert mit Hilfe der $?-Variablen zugreifen, wie das folgende Beispiel zeigt.
Beispiel 2. Rückgabewert eines Shellskripts
[bradh@rachel bradh]$ kdialog --password "Some Text"
hello
[bradh@rachel bradh]$ echo $?
0
Note
Die $? Variable wird aktualisiert, wenn ein Vordergrundprozess exististiert. Wenn sie die Variable später benötigen, müssen Sie sie sichern.
In diesem Beispiel ist der Rückgabewert 0. Er wäre 1, wenn der Cancel Button anstelle des OK Buttons gedrückt worden wäre. Die Konvention ist, dass negative Zahlen einen Fehler anzeigen, die shell subtrahiert den Wert jedoch von 256. Dies bedeutet: wenn Sie vergessen, ein benötigtes Argument anzugeben, ist der Rückgabewert -2 und $? gibt 254 zurück.
Note
Dies unterscheidet sich von den darunterliegenden Elementen. Wenn Sie mit darunterliegenden Qt-Elementen vertraut sind, könnte das etwas verwirrend sein, doch dies ist wichtig, um mit dem Standard des Shellskriptings konform zu sein.
Beispiel 3. Shellskript Rückgabewert mit Fehler
[bradh@rachel bradh]$ kdialog --password
kdialog: '<text>' missing.
kdialog: Benutzen Sie --help um eine Liste der verfügbaren Optionen anzuzeigen.
[bradh@rachel bradh]$ echo $?
254
In einem Shellskript ist es von Vorteil, den Rückgabewert nach jedem Aufruf zu prüfen.
Beispiel 4. Passwort Dialog, mit Prüfung des Rückgabewertes
kdialog --password "Bitte den Zugangscode für den Server eingeben:"
if [ $? = 0 ]; then
echo " Sie wählten: OK"
else
echo " Sie wählten: Abbrechen"
fi
Zusätzlich zum Rückgabewert erhalten Sie auch das Passwort (vorausgesetzt, Sie haben OK ausgewählt). Beim Passwort Dialog und allen anderen kdialog Dialogen mit Eingabemöglichkeiten wird das Ergebnis auf der Standardausgabe zurückgegeben. Dies gibt Ihnen die Möglichkeit, die Ausgabe in eine Datei umzulenken oder an ein anderes Programm weiterzugeben. In unserem Fall mit dem Passwortdialog wird der eingegebene Text als Echo wiedergegeben, wie Beispiel 2 zeigt, bis Sie die Ausgabe umleiten.
Beispiel 5. Passwortdialog mit Ausgabeumleitung
$ kdialog --password "Passwort eingeben" > password.file
$ cat password.file
Secrter
Anstatt das Ergebnis in einer Datei zu speichern, können Sie auch eine Shellvariable nutzen. Dazu brauchen Sie die "backtick" Notation, die Taste finden Sie normalerweise auf der linken unteren Seite Ihrer Tastatur.
Beispiel 6. Passwortdialog mit Benutzung einer Shellvariable
[bradh@rachel kdialog]$ password=`kdialog --password "Passwort eingeben"`
[bradh@rachel kdialog]$ echo $password
Secreter
Wie in den vorherigen Beispielen nicht gezeigt können Sie auch die --title Option nutzen, um den Titel der Dialogbox anzugeben. Folgendes Beispiel zeigt dies.
Beispiel 7. Passwortdialog, mit Titel
kdialog --title "ACAP entry" --password "Bitte den Zugangscode für den Server eingeben:"
Das Ergebnis ist unten dargestellt.
Abb 2. Passwortdialog Beispiel, inklusive Fenstertitel