Re: Skriptfrage: Benutzereingabe mit Timeout
Hi.
Das ist eher ein fieser Hack, aber damit geht es erstmal in meinem
schnellen Versuch.
> #!/bin/bash
>
> timeout=10
> {
> for ((i=timeout; i>=0; i--)); do
> printf "$(tput sc)\r[%02d]$(tput rc)" $i
> sleep 1
> done &
> } 2> /dev/null
> printf " Input? "
> read -t $timeout.1 input || printf "\n"
> kill $! &>/dev/null
> : ${input:=defaultvalue}
> printf "Hello %s!\n" $input
Der Ansatz ist folgender: Es gibt ein normales read mit timeout und
nebenbei noch einen Hintergrundprozess, der sekündlich den Countdown
runterzählt.
Ob das auf lange sich zuverlässig ist kann ich nicht sagen.
Insbesondere da für einen ganz kurzen Moment der Cursor versetzt wird,
wenn der countdown runtergezählt wird. Ob das ein Problem werden kann,
weis ich allerdings nicht, da printf und read beide bash internals sind.
Liebe Grüße,
Micha
Reply to: