PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Shell] Dialog - Inpuxbox?!



Giuly
02-05-2003, 09:54
hi,
ich hab mal ne frage:
wie kann man in einem Dialog eine TextBox machen? Also da wo man test eingeben kann.

anda_skoa
02-05-2003, 11:54
Vielleicht so:



dialog --inputbox Titel Höhe Breite Initialwert


zB
#> dialog --inputbox Name 10 60 anda_skoa

Ciao,
_

Giuly
02-05-2003, 12:28
Und wie pack ich den Wert in einen String?

tuxipuxi
02-05-2003, 13:26
--inputbox text height width [init]
An input box is useful when you want to ask questions that require the user to input a string as the answer. If init is supplied it is used to initialize the input string. When entering the string, the BACKSPACE key can be used to correct typing errors. If the input string is longer than can fit in the dialog box, the input field will be scrolled. On exit, the input string will be printed on stderr.


aus manpage dialog

Giuly
02-05-2003, 13:43
also
dialog --inputbox Name 10 60 anda_skoa blah is dann $blah?!

arthur
02-05-2003, 14:09
nein,
die ausgabe erfolgt auf stderr.
eine mögliche lösung wäre


dialog --inputbox Name 10 60 anda_skoa 2>/tmp/xxx.tmp
blah=`cat /tmp/xxx.tmp`
echo $blah
usw.
rm /tmp/xxx.tmp


gruss
Arthur

Giuly
02-05-2003, 17:12
Ich hab jetzt aber noch ein Problem:
wie kann ich da in einer TextBox z.B. die sachen von wget ausgeben?

anda_skoa
02-05-2003, 17:20
Original geschrieben von arthur
nein,
die ausgabe erfolgt auf stderr.
eine mögliche lösung wäre


dialog --inputbox Name 10 60 anda_skoa 2>/tmp/xxx.tmp
blah=`cat /tmp/xxx.tmp`
echo $blah
usw.
rm /tmp/xxx.tmp



Man könnte auch zuerst den stderr in den stdin umleiten und den direkt in die Variable zuweisen



blah=$(dialog --inputbox Name 10 60 anda_skoa 2>&1)


Ciao,
_

anda_skoa
02-05-2003, 17:22
Original geschrieben von Giuly
Ich hab jetzt aber noch ein Problem:
wie kann ich da in einer TextBox z.B. die sachen von wget ausgeben?

Eventuell mit --tailbox

Schau einfach mal in der Manpage von dialog nach

Ciao,
_

Giuly
02-05-2003, 17:45
--tailbox file height width
Display text from a file in a dialog box, as in a "tail -f" com-
mand.

--tailboxbg file height width
Display text from a file in a dialog box as a background task,
as in a "tail -f &" command.

Dialog treats the background task specially if there are other
widgets (--and-widget) on the screen concurrently. Until those
widgets are closed (e.g., an "OK"), dialog will perform all of
the tailboxbg widgets in the same process, polling for updates.
You may use a tab to traverse between the widgets on the screen,
and close them individually, e.g., by pressing ENTER. Once the
non-tailboxbg widgets are closed, dialog forks a copy of itself
into the background, and prints its process id if the --no-kill
option is given.

NOTE: Older versions of dialog forked immediately and attempted
to update the screen individually. Besides being bad for per-
formance, it was unworkable. Some older scripts may not work
properly with the polled scheme.

hä?!

tuxipuxi
02-05-2003, 19:00
hä?!

stark aussagekraeftiger beitrag, darf ich raten was du uns mitteilen moechtest?

a) du kannst kein englisch?
b) du verstehst den text inhaltlich nicht?
c) du hast keine lust zu verstehen sondern fragst lieber?

ich tippe auf c)

Giuly
02-05-2003, 23:51
nichts von alledem...

da steht für micht, dass es das selbe wie tail -f macht.

Display text from a file in a dialog box, as in a "tail -f" com-
mand.

Packt nen Text aus ner datei in ne Dialogbox, wie im "tail -f" command.
Nur will ich, dass er wget macht, und die Prozentanzeige und sowas in die msgbox packt.

arthur
03-05-2003, 07:39
du kannst sehr vieles mit dialog anzeigen,
auch eine progressbar,
nur wird dialog dir die arbeit nicht nehmen können,
die notwendigen informationen vorzubreiten.
und nur mit shell skript wird es wahrscheinlich sehr
schwer, perl oder python wären hier angesagt.

gruss
Arthur

Giuly
03-05-2003, 12:09
hmm, dann versuch ichs so: er soll einen Dialog anzeigen und im hintergrund wget machen. danach den nächsten Dialog anzeigen. Aber:
Wie lasse ich wget unsichtbar laufen, und wenns fertig ist nen Dialog anzeigen?

Edit: eine Frage noch:


--gauge text height width [percent]
A gauge box displays a meter along the bottom of the box. The
meter indicates the percentage. New percentages are read from
standard input, one integer per line. The meter is updated to
reflect each new percentage. If stdin is XXX, then subsequent
lines up to another XXX are used for a new prompt. The gauge
exits when EOF is reached on stdin.

The percent value denotes the initial percentage shown in the
meter. If not specified, it is zero.


Wie sag ich ihm jetzt wärend der Dialog angezigt wird, dass er 2% und so weiter zeigen soll?

arthur
03-05-2003, 17:06
das ist ja das problem, du musst wget und dialog starten,
das stdout von wget lesen und parsen und den wert dann dialog als stdin weitergeben.
um etwas "unsichtbar" laufen zu lassen musst du einfach die ausgaben nach /dev/null umlenken.

gruss
Arthur

Giuly
03-05-2003, 19:49
ich hab den Task einfach in den Hintergrundgeschickt....

aber wie saug ich dem Ding jetzt, dass es z.B. 20% anzeigen soll? (Unabhängig von wget, die Statusbar soll den Compliervorgang anzeigen)

arthur
03-05-2003, 21:56
New percentages are read from
standard input, one integer per line.
.......
The gauge
exits when EOF is reached on stdin.


oder was meinst du ?

gruss
Arthur

Giuly
03-05-2003, 22:57
ja...
ich weiß nicht was stdin is o.O!!!

arthur
04-05-2003, 09:07
zu stdin:


Jedes Kommando (Programm) wird beim Aufruf mit 3 E/A-Kanälen
versehen:
stdin Standard-Eingabe (Vorbelegung = Tastatur),
stdout Standard-Ausgabe (Vorbelegung = Terminal) und
stderr Fehler-Ausgabe (Vorbelegung = Terminal).
Diese E/A-Kanäle können auf Dateien umgeleitet werden oder auch mit
denen anderer Kommandos verknüpft werden (Pipes).

hier noch ein minimal beispiel:


(echo 20;sleep 1;echo 40;sleep 1) | dialog --gauge test 10 60

Giuly
04-05-2003, 23:36
hmm....
also ich hab das hier:


$javadir/bin/javac $yacedir/gogi/yace2/MainClass.java
$javadir/bin/javac $yacedir/gogi/yace2/base/Util.java
$javadir/bin/javac $yacedir/gogi/yace2/base/Listener.java
$javadir/bin/javac $yacedir/gogi/yace2/base/SockHandler.java
$javadir/bin/javac $yacedir/gogi/yace2/base/TimedActionHandler.java
$javadir/bin/javac $yacedir/gogi/yace2/core/YaCE.java
$javadir/bin/javac $yacedir/gogi/yace2/core/UserImpl.java
$javadir/bin/javac $yacedir/gogi/yace2/core/RoomImpl.java
$javadir/bin/javac $yacedir/gogi/yace2/core/UserContainerImpl.java
$javadir/bin/javac $yacedir/gogi/yace2/core/RoomContainerImpl.java
$javadir/bin/javac $yacedir/gogi/yace2/core/SendStopThread.java
$javadir/bin/javac $yacedir/gogi/yace2/core/FileRegistry.java
$javadir/bin/javac $yacedir/gogi/yace2/core/RegistryUserImpl.java
$javadir/bin/javac $yacedir/gogi/yace2/general/ShellConsole.java
$javadir/bin/javac $yacedir/gogi/yace2/general/LoginHandler.java
$javadir/bin/javac $yacedir/gogi/yace2/general/InputHandler.java
$javadir/bin/javac $yacedir/gogi/yace2/general/ConsoleHandler.java
$javadir/bin/javac $yacedir/gogi/yace2/general/Protofiles.java
$javadir/bin/javac $yacedir/gogi/yace2/general/CgiHandler.java
$javadir/bin/javac $yacedir/gogi/yace2/general/FileHandler.java
$javadir/bin/javac $yacedir/gogi/yace2/general/SourceHandler.java
$javadir/bin/javac $yacedir/gogi/yace2/general/AdminHandler.java
$javadir/bin/javac $yacedir/gogi/yace2/interfaces/User.java
$javadir/bin/javac $yacedir/gogi/yace2/interfaces/Room.java
$javadir/bin/javac $yacedir/gogi/yace2/interfaces/RoomContainer.java
$javadir/bin/javac $yacedir/gogi/yace2/interfaces/UserContainer.java
$javadir/bin/javac $yacedir/gogi/yace2/interfaces/Server.java
$javadir/bin/javac $yacedir/gogi/yace2/interfaces/Version.java
$javadir/bin/javac $yacedir/gogi/yace2/interfaces/NoSuchKeyException.java
$javadir/bin/javac $yacedir/gogi/yace2/interfaces/SocketHandlerI.java
$javadir/bin/javac $yacedir/gogi/yace2/interfaces/ScriptedMethods.java
$javadir/bin/javac $yacedir/gogi/yace2/interfaces/LogHandler.java
$javadir/bin/javac $yacedir/gogi/yace2/interfaces/RegistryUserContainer.java
$javadir/bin/javac $yacedir/gogi/yace2/interfaces/RegistryUser.java


= 34 Aufgaben, also 3.4% pro Aufgabe
wie kann ich jetzt machen, dass der nach jeder aufgabe 3.4 bzw. 4% hinzufügt?