Rosika
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1359
|
Hallo zusammen, ich habe eine Frage zu Umleitungen.
Ich habe "dialog" installiert und hoffe, das in Skripte einbauen zu können. Immerhin macht das optisch schon etwas her.
Aus der Seite https://wiki.ubuntuusers.de/Dialog/ heisst es unter "Beispiel mir Menüauswahl":
"Das Ergebnis der Auswahl wird dabei von dialog auf stderr geschrieben."
Soweit habe ich das verstanden. Da ich dieses Ergebnis zur Weiterverarbeitung brauche, möchte ich mir stderr anschauen. Und ganau da hakt´s bei mir.
Ich schaffe es nicht, die Umleitung mit "2>" z.B. in eine Textdatei zu bewerkstelligen. Um bei dem o.g. genannten Beispiel zu bleiben: | dialog --backtitle "Desktop System" \
--radiolist "Select Desktop:" 10 40 4 \
1 Gnome off \
2 KDE on \
3 XFCE off
|
Wie kann ich jetzt das Auswahlergebnis anzeigen? Wie und wo müsste denn der Befehl mit z.B. "2> Ergebnis.txt" eingefügt werden? Irgendwie bekomme ich das nicht hin. Vielen Dank im voraus.
Grüsse.
Rosika 😐
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Willst Du das Ergebnis tatsächlich in einer Datei haben ? - denn normalerweise würde ich erwarten, dass man in einem Skript sowas lieber in einer Variablen ablegt ... Das geht durchaus, nur muss man dann die Devices /dev/stdout und /dev/stderr vertauschen, am besten über ein Hilfs-Device. **[Edit:] - bzw. man kann die Ausgabe von dialog passend umleiten. LG, track
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1359
|
Hallo track, danke für Deine Antwort. Irgendwie stehe ich gerade auf dem Schlauch oder bin zu dusselig dafür. [...] normalerweise würde ich erwarten, dass man in einem Skript sowas lieber in einer Variablen ablegt ...
O.K., das würde ich gerne machen. Letzendlich geht es doch darum, dass man das Ergebnis der Auswahl weiterverarbeiten kann.
Ich habe auch den Deinen Link durchgesehen; es ist mir leider immer noch nicht klar, wie ich das jetzt mache. Nochmals danke.
Grüsse.
Rosika
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Konntest Du das Beispiel auf dem verlinkten Thread von früher nicht nachvollziehen ? Ok, dann versuchen wir es hier noch einmal, in kleinen Schritten. (da ich selber dialog nicht installiert habe, müsstest Du bitte jeweils die Ergebnisse hier posten !) Was erscheint im Terminal, wenn Du bei Deinem Befehl einen Punkt auswählst ? - sieht man dann die 1,2 oder 3 ? Was passiert, wenn Du jetzt das Device /dev/stderr nach Null umleitest ? (also ein 2> /dev/null dahinter) Was sieht man dann ? Was sieht man, wenn Du dem dialog dann noch die Option --stdout mitgibst ?
Probier das mal aus und berichte bitte. LG, track
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1359
|
Hallo track, vielen Dank für Deine Rückmeldung. Konntest Du das Beispiel auf dem verlinkten Thread von früher nicht nachvollziehen ?
Nunja, leider nicht so ganz. 😳
zu 1.) Select Desktop:
() 1 Gnome
(*) 2 KDE
() 3 XFCE Als Anhang schicke ich einen Screenshot. zu 2.) Es passiert nichts anderes. Dialog startet ebenso und läßt sich mit denselben Funktionen bedienen. zu3.) genauso wie bei 2.) LG Rosika
- Bilder
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Ach, so sieht das aus. Ok, und was steht im Terminal, nachdem Du einen der 3 Punkte gewählt hast ? track
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1359
|
Hi, im Terminal steht nichts weiter als das, was ich als Screenshot geschickt habe. Also: Wähle ich "1", dann ist das erste Feld blau hinterlegt, bei "2" dann das zweite, also (*) 2 KDE.
Auch mit den Rauf-/Runter-Tasten lassen sich die Felder anwählen. Weiter tut dieses Beispielprogramm nichts.
Mit ENTER schliesst dann das Programm.
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Ja genau, und was steht dann (wenn das dialog - Fenster weg ist) im Terminal ? → Das ist die entscheidende Frage, denn das willst Du ja ggf. umleiten ! track
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1359
|
Hallo track, genau darum geht´s. Und gerade das macht mir Probleme.
Es heißt ja "Das Ergebnis der Auswahl wird dabei von dialog auf stderr geschrieben."
Und das brauche ich ja. Aber: Um auf Deine Frage zu antworten: Wenn das Dialog-Fenster weg ist, dann steht nichts drin. Keine Ausgabe.
Wenn ich das eingangs zitierte Beispielprogramm als Skript starte, dann schließt sich das geöffnete Terminal blitzschnell, nachdem ich einen der drei Punkte ausgewählt und mit "ENTER" bestätigt habe.
Gebe ich hingegen
| dialog --backtitle "Desktop System" \
--radiolist "Select Desktop:" 10 40 4 \
1 Gnome off \
2 KDE on \
3 XFCE off
|
genau so ins Terminal ein, also als Befehl, dann beendet sich Dialog genauso, ohne jedwede Ausgabe. Ein Screenshot ist im Anhang. Darum war ja meine Frage: wie komme ich denn an das Ergebnis ran, das auf sterr geschrieben wird. Grüsse.
Rosika
- Bilder
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Ich verstehe noch nicht ganz ... Auf dem Screenshot sehe ich 2K in dem ok- Geld stehen. Das könnte ja evt. die gesuchte Rückmeldung sein. Was passiert, wenn Du die gesamte stdout- Ausgabe nach Null umleitest: dialog --backtitle "Desktop System" \
--radiolist "Select Desktop:" 10 40 4 \
1 Gnome off \
2 KDE on \
3 XFCE off > /dev/null Steht dann hinterher immer noch das 2K in dem ok- Feld ? Und was passiert, wenn Du statt dessen die stderr- Ausgabe nach Null umleitest ? (also ein 2> /dev/null am Ende !) (es kann sein, dass dann gar nichts mehr erscheint und Du "blind" antworten musst) Dann wissen wir wenigstens mal, was er wo ausgibt. track
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1359
|
Hi track, vielen Dank für Deine Hartnäckigkeit 😉 . 1.) Besagtes 2K anstatt des OK-Buttons erscheint immer, also unabhängig davon, ob ich 1, 2 oder 3 wähle (sehr merkwürdig). Also definitiv kein Hinweis auf die gesuchte Rückmeldung. 2.)
Wenn ich die gasamze stout-Ausgabe nach Null umleite, und den Befehl so starte (mit "ENTER" bestätige) passiert erst mal gar nichts. Erst beim erneuten Drücken von "ENTER" schließt das Programm. Als einzige Ausgabe erscheint "2⏎ ". Der Dialog-Befehl hat letzten Endes gar nichts bewirkt. 3.)
Wenn ich die sterr-Ausgabe nach Null umleite, funktioniert das Programm wie gewünscht. Ich kann 1, 2 oder 3 wählen. Darauf schließt sich alles, und: es erscheint jetzt tatsächlich das "OK" (und nicht mehr "2K"). Aber: Nach wie vor kein Rückgabewert, der Rückschluss auf die gedrückte Option gibt. (s. neuer screenshot). Grüsse.
Rosika
- Bilder
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Ok, dann probieren wir die beiden Varianten jetzt nicht mit dem Null-Device, sondern wir leiten das Zeug in eine test-Datei um: | dialog --backtitle "Desktop System" \
--radiolist "Select Desktop:" 10 40 4 \
1 Gnome off \
2 KDE on \
3 XFCE off > test1
|
| dialog --backtitle "Desktop System" \
--radiolist "Select Desktop:" 10 40 4 \
1 Gnome off \
2 KDE on \
3 XFCE off 2> test2
|
Jetzt die Preisfrage: was kommt in den beiden Dateien an ? Wenn man das weiß, dann kann man es auch in eine Variable umleiten. track
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1359
|
Hi track, genau das habe ich in der Zwischenzeit ebenfalls ausprobiert.
Hier die Ergebnisse: zu 1.): im Terminal tut sich nichts. Alles wird in die Datei geschrieben. Natürlich wirres Zeug, da als Text nicht darstell-/interpretierbar (s. screenshot). zu 2.): Programm wird wie gewünscht ausgeführt. In die Datei wird lediglich die Zahl "2" geschrieben, aber unabhängig davon, welche Auswahl man getroffen hat! Also "2" ist immer in der Datei, beim Drücken von 1, 2 oder 3. Also irgendetwas kann doch mit der Aussage Das Ergebnis der Auswahl wird dabei von dialog auf stderr geschrieben.
nicht ganz stimmen, oder zumindest läßt sich der Inhalt von stderr nicht abrufen. Man bedenke, was wir alles schon probiert haben. 😐 Grüsse.
Rosika
- Bilder
|
Rosika
(Themenstarter)
Anmeldungsdatum: 26. Februar 2016
Beiträge: 1359
|
Also, ich glaube, ich bin da auf etwas Grundsätzliches gestoßen. Vielleicht hat´s damit zu tun. Auf der Seite https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_f%C3%BCr_Anf%C3%A4nger/ ist ein bash-Skript, das Gebrauch macht von dialog.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 | #!/bin/bash
# erweiterter Dialog
dialog --backtitle Umfrage --title "Erste Frage" --yesno "Sind sie ein Linuxfan?" 15 60
antwort=${?}
if [ "$antwort" -eq "255" ]
then
echo "Abgebrochen"
exit 255
fi
if [ "$antwort" -eq "1" ]
then
dialog --backtitle Umfrage --title Kritikbox --msgbox "Na, dann wird es aber allerhöchste Zeit!" 15 40
fi
if [ "$antwort" -eq "0" ]
then
dialog --backtitle Umfrage --title Lobbox --msgbox "Hm, das hab ich mir fast schon gedacht!" 15 40
auswahl=$(dialog --stdout --backtitle Umfrage --title Details --radiolist "Welche Desktop-Umgebung bevorzugen Sie? Sie können nur eine wählen." 16 60 5 \
"GNOME" "Die GNOME Desktop Umgebung" off \
"KDE" "Die KDE Desktopumgebung" on \
"Sonstige" "Eine andere hier nicht gelistete" off)
fi
case "$auswahl" in
Gnome)
dialog --backtitle Umfrage --title Reaktion --msgbox "Sehr schön Gnome!" 15 40
;;
KDE)
dialog --backtitle Umfrage --title Reaktion --msgbox "Sehr schön KDE!" 15 40
;;
Sonstige)
dialog --backtitle Umfrage --title Reaktion --msgbox "Hm Sonstige!" 15 40
;;
esac
|
Das habe ich mal laufen lassen und dabei festgestellt, daß es in einem bestimmten Punkt nicht so funktioniert wie es soll.
Und zwar sind bei der radiolist folgende Einträge: | auswahl=$(dialog --stdout --backtitle Umfrage --title Details --radiolist "Welche Desktop-Umgebung bevorzugen Sie? Sie können nur eine wählen." 16 60 5 \
"GNOME" "Die GNOME Desktop Umgebung" off \
"KDE" "Die KDE Desktopumgebung" on \
"Sonstige" "Eine andere hier nicht gelistete" off)
|
Nur die zweite Eingabe "KDE" ist auf "on" gestellt. Das hat zur Folge, daß egal welche Auswahl ich treffe, ob "GNOME", "KDE" oder "Sonstige",
immer die Ausgabe erfolgt: "Sehr schön KDE!". Also ist der Ausgabewert immer gleich. Ganz sicher soll´s so ja nicht sein.
Und ich denke, daß hier evtl. der Hase im Pfeffer liegt. Grüsse.
Rosika
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11265
Wohnort: München
|
Rosika schrieb: Nur die zweite Eingabe "KDE" ist auf "on" gestellt. Das hat zur Folge, daß egal welche Auswahl ich treffe, ob "GNOME", "KDE" oder "Sonstige",
immer die Ausgabe erfolgt: "Sehr schön KDE!". Also ist der Ausgabewert immer gleich. Ganz sicher soll´s so ja nicht sein.
Wie triffst du die Auswahl? Man wählt an der Stelle ja den Punkt in der Radiolost mit der Leertaste und bestätigt dann die Auswahl mit der Eingabetaste. Nebenbei bemerkt ist GNOME in der Zeile 29 falsch geschrieben, dialog liefert in dem Fall "GNOME", also muss das auch in Großbuchstaben in dem Case-Statement stehen.
|