[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: