In ksh können Sie grundsätzlich Folgendes tun:
stty raw
REPLY=$(dd bs=1 count=1 2> /dev/null)
stty -raw
read -n1
funktioniert für bash
Die stty raw
Der Modus verhindert, dass Strg-C funktioniert, und kann dazu führen, dass Sie in einer Eingabeschleife ohne Ausweg stecken bleiben. Auch die Manpage sagt stty -raw
ist nicht garantiert, dass Ihr Terminal wieder in den gleichen Zustand versetzt wird.
Aufbauend auf der Antwort von dtmilano mit stty -icanon -echo
vermeidet diese Probleme.
#/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
kann es tun:
read -n1 ans