De help read
:
-t timeout time out and return failure if a complete line of input is
not read within TIMEOUT seconds. The value of the TMOUT
variable is the default timeout. TIMEOUT may be a
fractional number. If TIMEOUT is 0, read returns immediately,
without trying to read any data, returning success only if
input is available on the specified file descriptor. The
exit status is greater than 128 if the timeout is exceeded
Então tente:
while true
do
echo "$var"
IFS= read -r -t 0.5 -n 1 -s holder && var="$holder"
done
A variável holder
é usada, pois uma variável perde seu conteúdo quando usada com read
, a menos que seja somente leitura (caso em que não é útil de qualquer maneira), mesmo se read
expirou:
$ declare -r a
$ read -t 0.5 a
bash: a: readonly variable
code 1
Não consegui encontrar uma maneira de evitar isso.