In ksh puoi sostanzialmente fare:
stty raw
REPLY=$(dd bs=1 count=1 2> /dev/null)
stty -raw
read -n1
funziona per bash
Il stty raw
mode impedisce il funzionamento di ctrl-c e può bloccarti in un ciclo di input senza via d'uscita. Anche la pagina man dice stty -raw
non è garantito che il tuo terminale torni allo stesso stato.
Quindi, basandoci sulla risposta di dtmilano usando stty -icanon -echo
evita questi problemi.
#/bin/ksh
## /bin/{ksh,sh,zsh,...}
# read_char var
read_char() {
stty -icanon -echo
eval "$1=\$(dd bs=1 count=1 2>/dev/null)"
stty icanon echo
}
read_char char
echo "got $char"
In bash, read
può farlo:
read -n1 ans