Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
dialog --inputbox ???

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Shell
Gast





BeitragVerfasst am: 21. Nov 2001 12:14   Titel: dialog --inputbox ???

hi

dialog --clear --title "Menu" --inputbox "Eingabe" 8 32 <???> && echo <???>

durch was ersetze ich <???>, damit das hinhaut ... ich habe schon einiges probiert, aber funzt ned.

danke
 

Jochen
Gast





BeitragVerfasst am: 21. Nov 2001 15:17   Titel: Re: dialog --inputbox ???

Mit was für einem dialog arbeitest Du? 0.9a? Und was willst Du eigentlich ausgegeben haben? Das, was Du eingegeben hast?

Ein paar Möglichkeiten:
dialog ... 2>/tmp/tmpdat.$$ && cat /tmp/tmpdat.$$ ; rm -f /tmp/tmpdat.$$
oder
VAR=$(dialog ... 2>&1)
Mittels $? kannst Du dann rauskriegen, ob "Cancel" gewählt wurde, oder kombinier's direkt mit 'ner Fehlerbehandlung:
code:

if VAR=$(dialog --clear --title 'Hi!' --inputbox "Eingabe" 8 32 "Vorgabewert" 2>&1)
then
echo "Erfolg, Eingabe ist $VAR"
else
echo "Eingabe wurde abgebrochen oder sonstiger Fehler"
fi



So, und wenn's jetzt immer noch nicht funzt, wäre die Fehlermeldung recht hilfreich, die dialog (oder die Shell?) ausschmeisst und die in Deinem ersten Posting leider gefehlt hat. ("funzt net" lässt eine ziemlich breite Auslegung zu...)

Jochen
 

Shell
Gast





BeitragVerfasst am: 23. Nov 2001 10:21   Titel: Re: dialog --inputbox ???

oh sorry ...

Das ist meine derzeitige Lösung:

dialog --clear --title "TITEL" --inputbox "Eingabe" 8 32 2>/tmp/.input
VAR="´cat /tmp/.input`";
echo $VAR
rm -f /tmp/.input

Eine Fehlermeldung hatte ich voreher nicht .... ich bekam einfach nur keine Ausgabe, da ich das über eine Variable lösen wollte.
- Versionsnummer weiß ich grade net (nutze RedHat 6.2) <- die integrierte version.

Shell

kleine Frage am Rande: was ist der Unterschied zwischen

>/tmp/test
2>/tmp/test
>2&1/tmp/test

???????
woher weiß ich, wann ich welches nutzen soll ?
 

Jochen
Gast





BeitragVerfasst am: 23. Nov 2001 11:31   Titel: Re: dialog --inputbox ???

Na ja, auf die Tour braucht man halt eine Extra-Datei. Und wenn man dann das Skript abbricht, bleibt sie noch irgendwo liegen, und bei mehreren gleichzeitig laufenden Instanzen Deines Skriptes überschreiben sich die Dateien vielleicht gegenseitig usw. usf.

Also würde ich Dir weiterhin
VAR=`dialog --inputbox ... 2>&1`
empfehlen, da Du Dir diese ganzen Probleme ersparst.

Soooo, und jetzt zu Deiner "kleinen Frage am Rande"!

Typischerweise hat bekommt ein Programm unter Unix zur Ein-/Ausgabe drei Dateideskriptoren mit:

0 = Standardeingabe (stdin)
1 = Standardausgabe (stdout)
2 = Standardfehlerausgabe (stderr)

Die Standardeingabe ist per Default mit dem Terminal, an dem Du arbeitest, verknüpft, also mit Deiner Tastatur. Soll ein Programm statt dessen aus einer Datei lesen, kann man mit der Dateieingabeumlenkung "<" arbeiten. Dadurch verknüpft die Shell die Standardeingabe mit der folgenden Datei, und das Programm liest statt von der Tastatur aus der Datei. Das bleibt übrigens für das Programm vollkommen transparent: Wo die Daten herkommen, die es über stdin erhält, ist ganz gleichgültig!

Das gleiche gilt auch für stdout, die Standardausgabe. Sie kann man mittels ">" oder in Langform mit "1>" umlenken. Dadurch erscheinen die Ausgaben des Programms nicht mehr am Terminal, sondern werden in die Datei gelenkt, die auf das ">" folgt.

Das "|"-Zeichen verknüpft die Standardausgabe des ersten Kommandos mit der Standardeingabe des ersten Kommandos.

Problem: Was, wenn eines der Programme nun einen Fehler melden muss? Man würde ja nichts mehr davon sehen. daher gibt es zusätzlich auch noch stderr, die Standardfehlerausgabe. Auch wenn stdout in eine Datei oder in eine Pipe umgelenkt wurde, erscheinen Ausgaben über stderr immer noch am Monitor! Umlenken kann man die Ausgaben (z.B. füpr spätere genauere Betrachtung mittels "2>" (Nummer der Deskriptors und Ausgabeumlenkungszeichen).

So weit, so gut? Schön.

Dann woll'n mer mal konkret werden:
">/tmp/dat" lenkt also die Standardausgabe des Kommandos um in die Datei /tmp/dat.
"2>/tmp/dat" lenkt die Standardfehlerausgabe des Kommandos um in die Datei /tmp/dat.
">2&1/tmp/test" gibt es so nicht. Meintest Du vielleicht ">/tmp/test 2>&1"? Das hiesse "Lenke stdout um nach /tmp/test, und stderr dahin, wo stdin hinzeigt". Es ist also nur eine Kurzform für ">/tmp/test 2>/tmp/test".

Etwas klarer, das ganze? dialog ist nun gerade nicht das tollste Programm, um diese Grundlagen zu verstehen, da dialog etwas klüger ist und sein Menü nicht über den Mechanismus wie o.a. auf den Schirm bringt. Aber es verwendet stderr, um die Eingabe auszugeben. Wenn ich nun mit der Kommandosubstitution (`dialog --...`) arbeite, muss ich stderr dahin lenken, wo stdin hinzeigt, damit ich hinterher den Wert für die Variable dort eingesetzt bekomme: "2>&1".

Woher man weiss, wie dialog das macht? Oh, gaaanz einfach: "man dialog"
Mit dem Hintergrundwissen hier solltest Du dann die Verweise auf STDERR und so verstehen können.

Jochen

P.S.: Schön, dass Du geantwortet hast!
 

Shell
Gast





BeitragVerfasst am: 23. Nov 2001 12:16   Titel: Re: dialog --inputbox ???

Hey .. danke für deine informativen Antworten... haben mir schon sehr viel geholfen.

VAR=$(dialog --clear --title 'Hi!' --inputbox "Eingabe" 8 32 "Vorgabewert" 2>&1) <- funktioniert bei meiner Version offensichtlich nicht, denn der Bildschirm wird schwarz und am obersten linken Eck blinkt der Cursor

Gruß B.
 

Jochen
Gast





BeitragVerfasst am: 23. Nov 2001 13:19   Titel: Re: dialog --inputbox ???

Wird wohl 'ne ältere Version sein (0.7?). Laut der "Dialog Home Page" (http://www.advancedresearch.org/dialog/) gibt es einfach mehrere Branches von einer 0.6er Version aus. Die "offiziellste" davon ist wohl hier (ftp://ftp.us.debian.org/debian/pool/main/d/dialog/) zu finden. Übrigens, ein "rpm -q dialog" sagt Dir die Versionsnummer. Bei RH7.2 (meine Referenz) ist es die 0.9a. Neu übersetzen, installieren und geniessen...

Jochen
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy