Skriptfrage: Benutzereingabe mit Timeout

27/11/2013 - 23:40 von Andre Tann | Report spam
Hallo zusammen,

ich möcht gerne eine Benutzereingabe realisieren mit einem Timeout. Macht der Nutzer keine Eingabe, so soll nach Ablauf der Zeitspanne ein Defaultwert gelten. Soweit mit read -t... kein Problem.

Nun würde ich gerne auch die Sekunden sehen, die rückwàrts bis auf 0 zàhlen. Gibts dafür ne einfache Lösung, die ich übersehen habe, oder muß ich mir dafür was konstruieren, was a) zàhlen kann, und b) wàhrenddessen auch direkt auf eine Eingabe reagiert?

Danke, und viele Grüße!
Andre Tann



Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-REQUEST@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an listmaster@lists.debian.org (engl)
Archive: http://lists.debian.org/52967093.3090702@alphasrv.net
 

Lesen sie die antworten

#1 Mathias Bauer
28/11/2013 - 07:30 | Warnen spam
Hallo Andre!

* Andre Tann schrieb am 27.11.2013 um 23:22 (+0100):

ich möcht gerne eine Benutzereingabe realisieren mit einem
Timeout. Macht der Nutzer keine Eingabe, so soll nach Ablauf
der Zeitspanne ein Defaultwert gelten. Soweit mit read
-t... kein Problem.



Vorsicht Bashismus! Die Option -t gibt es nur bei read in der
bash. Falls /bin/sh -> dash muss die shebang-Zeile #!/bin/bash
lauten. Wenn du das Skript portabel halten willst, gibt es
andernfalls nur die Alternative auf den Countdown ganz zu
verzichten. Da read ein internes Kommando ist, kann man es auch
nicht mit timelimit beenden. Aber wahrscheinlich weißt du das
sowieso.

Nun würde ich gerne auch die Sekunden sehen, die rückwàrts bis
auf 0 zàhlen. Gibts dafür ne einfache Lösung, die ich übersehen
habe, oder muß ich mir dafür was konstruieren, was a) zàhlen
kann, und b) wàhrenddessen auch direkt auf eine Eingabe
reagiert?



Eine einfache Lösung sehe ich nicht. Sollte das Skript im
Sekundentakt zàhlen und der Benutzer seine Eingabe nicht
innerhalb einer Sekunde komplett eingegeben haben, müsste das
Skript wegen b) auch noch mit Teileingaben umgehen können
(vgl. read -e der bash). Je mehr ich über die Details einer
bloßen Shell-Lösung nachdenke, desto größer wird der Albtraum.

Möglicherweise làsst sich mit dialog etwas basteln, was deinen
Anforderungen nàher kommt, wobei auch hier die parallele
Ausführung und v. a. die Darstellung das Problem sein wird:

dialog --gauge ...
dialog --timeout 10 --inputbox ...

Ob der ganze Aufwand sich in irgendeiner Form lohnt, musst du
selbst beantworten. Ist die bloße Erwàhnung des Timeouts in
einer Erklàrung vor der Eingabe wirklich nicht ausreichend?

Grüße
Mathias


Zum AUSTRAGEN schicken Sie eine Mail an
mit dem Subject "unsubscribe". Probleme? Mail an (engl)
Archive: http://lists.debian.org/

Ähnliche fragen