hold=' '
printf "Press 'SPACE' to continue or 'CTRL+C' to exit : "
tty_state=$(stty -g)
stty -icanon
until [ -z "${hold#$in}" ] ; do
in=$(dd bs=1 count=1 </dev/tty 2>/dev/null)
done
stty "$tty_state"
Isso agora imprime um prompt sem uma nova linha, manipula CTRL+C
de forma confiável, invoca stty
somente quantas vezes forem necessárias e restaura o controle tty exatamente para o estado no qual stty
o encontrou. Consulte man stty
para obter informações sobre como controlar explicitamente ecos, controlar caracteres e tudo mais.
Você também pode fazer isso:
printf "Press any key to continue or 'CTRL+C' to exit : "
(tty_state=$(stty -g)
stty -icanon
LC_ALL=C dd bs=1 count=1 >/dev/null 2>&1
stty "$tty_state"
) </dev/tty
Você poderia fazer isso com ENTER
, sem [
testes ]
e sem stty
como:
sed -n q </dev/tty