Eingabe von dialog bzw. xdialog weiterverarbeiten?
Hallo, ich habe bei mir Xdialog bzw. dialog installiert - funktioniert beides auch problemlos, allerdings weiß ich nicht, wie man die Eingabe des dialogs dann in einem Script weiterverabeiten kann. Folgendes Script z.B.: #!/bin/bash (X)dialog --inputbox Geburtsdatum 20 20 echo "Ihr Geburtsdatum lautet: $..." soll ausgeben: Ihr Geburtsdatum lautet: 11.11.1911 (oder je nach dem, was eben im Dialogfeld eingegeben wurde.) Wo wird die Eingabe hintransportiert und wie kann ich diese dann weiterverarbeiten? -- Viele Grüße/kind regards (o_ (o_ Dieter //> (o_ (o_ //\ http://www.linux-in-der-schule.de V_)_ (/)_ (\)_ V_/_
Hallo Dieter, * Dieter schrieb am 08.11.2003:
Hallo,
ich habe bei mir Xdialog bzw. dialog installiert - funktioniert beides auch problemlos, allerdings weiß ich nicht, wie man die Eingabe des dialogs dann in einem Script weiterverabeiten kann.
Folgendes Script z.B.: #!/bin/bash (X)dialog --inputbox Geburtsdatum 20 20 echo "Ihr Geburtsdatum lautet: $..."
soll ausgeben: Ihr Geburtsdatum lautet: 11.11.1911 (oder je nach dem, was eben im Dialogfeld eingegeben wurde.)
Wo wird die Eingabe hintransportiert und wie kann ich diese dann weiterverarbeiten?
birthday=$(dialog --inputbox Geburtsdatum 20 20 2>&1) Warum der Geburtstag auf STDERR ausgegeben wird ist mir selber schleierhaft, aber obiges funktioniert. 2>&1, leitet STDERR(2>) um nach STDOUT (1), das "&" ist nötig, sonst würde man ja in eine Datei namens "1" umleiten. Grüße, Tom
Am Samstag, 8. November 2003 23:01 schrieb Thomas Preissler:
birthday=$(dialog --inputbox Geburtsdatum 20 20 2>&1)
Vielen Dank, das habe ich gesucht :-)))
Warum der Geburtstag auf STDERR ausgegeben wird ist mir selber schleierhaft, aber obiges funktioniert.
Es gibt auch die option --stdout - mir war allerdings noch nicht klar, wie man diese Ausgabe in eine Variable hineinbringt - dank deiner Hilfe ist mir das jetzt klar geworden. Danke :-) -- Viele Grüße/kind regards (o_ (o_ Dieter //> (o_ (o_ //\ http://www.linux-in-der-schule.de V_)_ (/)_ (\)_ V_/_
Hallo, Am Sat, 08 Nov 2003, Dieter Kroemer schrieb:
Am Samstag, 8. November 2003 23:01 schrieb Thomas Preissler:
birthday=$(dialog --inputbox Geburtsdatum 20 20 2>&1)
Das tut bei mir nicht.
Warum der Geburtstag auf STDERR ausgegeben wird ist mir selber schleierhaft, aber obiges funktioniert.
Es gibt auch die option --stdout
Nicht unbedingt. $ dialog --stdout --inputbox Geburtsdatum 20 20 dialog version 0.62. [..] Wenn es nur ein lokales script ist, o.ae., dann geht sowas natuerlich. Portabel ist das aber nicht. Der "korrekte" Weg ist in etwa folgendes ==== #!/bin/sh tmp="`mktemp \"/tmp/meinproggie.$$.XXXXXX\"`" || exit 1 trap 'rm -f "$tmp"; exit 1;' 1 2 3 15 if dialog --inputbox Geburtsdatum 10 30 2>"$tmp" then var=`cat $tmp` # mach was mit $var, z.B.: echo "var='$var'" else echo "aborted" >&2 fi rm -f "$tmp" ==== Aus 'man dialog': --inputbox text height width [init] [..] On exit, the input string will be printed on stderr. Tja, wer lesen kann ist klar im Vorteil... -dnh -- 'Oh dear,' says God, 'I hadn't thought of that', and promptly vanishes in a puff of logic. -- Douglas Adams, The Hitch Hiker's Guide to the Galaxy
Am Sonntag, 9. November 2003 00:19 schrieb David Haller:
birthday=$(dialog --inputbox Geburtsdatum 20 20 2>&1)
Das tut bei mir nicht.
#!/bin/bash birthday=$(dialog --inputbox Geburtsdatum 20 20 2>&1) echo "Hallo mein Geburtsdatum lautet: $birthday" funktioniert bei mir einwandfrei.
Es gibt auch die option --stdout Nicht unbedingt.
Steht aber in der Man-page dabei ;-)
Der "korrekte" Weg ist in etwa folgendes
Ich lerne gerne dazu, möchte deine Vorgehensweise also auch verstehen, daher einige Frage hierzu:
==== #!/bin/sh tmp="`mktemp \"/tmp/meinproggie.$$.XXXXXX\"`" || exit 1
müsste eher mkdir heißen, oder? Das $$ das steht anscheinend für die Konsole, an der man gerade arbeitet, aber warum braucht man das? Für was benötigt man das ||exit 1 ?
trap 'rm -f "$tmp"; exit 1;' 1 2 3 15
Verstehe ich überhaupt nicht :-( der Rest ist mir (glaube ich) klar :-) Vielen Dank für deine Hilfe. -- Viele Grüße/kind regards (o_ (o_ Dieter //> (o_ (o_ //\ http://www.linux-in-der-schule.de V_)_ (/)_ (\)_ V_/_
Am Sonntag, 9. November 2003 13:43 schrieb Dieter Kroemer:
tmp="`mktemp \"/tmp/meinproggie.$$.XXXXXX\"`" || exit 1
müsste eher mkdir heißen, oder?
Neme ich sofort wieder zurück ;-) (Sorry) -- Viele Grüße/kind regards (o_ (o_ Dieter //> (o_ (o_ //\ http://www.linux-in-der-schule.de V_)_ (/)_ (\)_ V_/_
Hallo, Am Sun, 09 Nov 2003, Dieter Kroemer schrieb:
Am Sonntag, 9. November 2003 00:19 schrieb David Haller:
Das tut bei mir nicht.
#!/bin/bash birthday=$(dialog --inputbox Geburtsdatum 20 20 2>&1) echo "Hallo mein Geburtsdatum lautet: $birthday"
funktioniert bei mir einwandfrei.
Mag sein. Bei mir eben nicht. "dialog version 0.62."! Was eine Version von dialog hast du denn?
Es gibt auch die option --stdout Nicht unbedingt.
Steht aber in der Man-page dabei ;-)
Bei meinem dialog nicht. dh@slarty[1]: ~ (0)$ zgrep 'stdout' `man -w 1 dialog` dh@slarty[1]: ~ (1)$ Wenn es das bei dir gibt, dann kannst du das schon verwenden, aber "anderswo" funktioniert das dann eben nicht.
Der "korrekte" Weg ist in etwa folgendes
Ich lerne gerne dazu, möchte deine Vorgehensweise also auch verstehen, daher einige Frage hierzu:
==== #!/bin/sh tmp="`mktemp \"/tmp/meinproggie.$$.XXXXXX\"`" || exit 1
müsste eher mkdir heißen, oder?
Nein. Siehe man 1 mktemp.
Das $$ das steht anscheinend für die Konsole, an der man gerade arbeitet, aber warum braucht man das?
Das ist die bash-variable in der die aktuelle PID steht. mktemp wird also mit dem "template" "/tmp/meinproggie.1234.XXXXXX" aufgerufen, wenn die PID 1234 ist.
Für was benötigt man das ||exit 1 ?
Wenn man die temporaere Datei nicht erstellen kann, dann sollte der Rest auch nicht ausgefuehrt werden.
trap 'rm -f "$tmp"; exit 1;' 1 2 3 15
Verstehe ich überhaupt nicht :-(
help trap, trap -l, man 7 signal Wenn das script "gekillt" wird, oder mittels Strg+c abgebrochen wird, dann sollte man das tmp-file aufraeumen... Hm. Der Variablenname 'tmp' war evtl. nicht so gluecklich gewaehlt... -dnh -- "Windows NT has detected the following system change: Mouse has moved. Click 'OK' to reboot." -- Mike Andrews
Am Sonntag, 9. November 2003 14:29 schrieb David Haller:
Mag sein. Bei mir eben nicht. "dialog version 0.62."! Was eine Version von dialog hast du denn?
v0.9b
Der "korrekte" Weg ist in etwa folgendes
Ich lerne gerne dazu, möchte deine Vorgehensweise also auch verstehen,
daher einige Frage hierzu:
... Vielen Dank für deine Erklärungen - nun sehe ich etwas klarer :-)) -- Viele Grüße/kind regards (o_ (o_ Dieter //> (o_ (o_ //\ http://www.linux-in-der-schule.de V_)_ (/)_ (\)_ V_/_
participants (3)
-
David Haller
-
Dieter Kroemer
-
Thomas Preissler