ksh では、基本的に次のことができます:
stty raw
REPLY=$(dd bs=1 count=1 2> /dev/null)
stty -raw
read -n1
bashで動作
stty raw
モードでは ctrl-c が機能しなくなり、抜け道のない入力ループに陥る可能性があります。また、マニュアルページには stty -raw
と書かれています 端末が同じ状態に戻ることを保証するものではありません。
したがって、 stty -icanon -echo
を使用して dtmilano の回答に基づいて構築します それらの問題を回避します。
#/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"
bash では、read
できます:
read -n1 ans