Deseo una opción similar como getche()
en c. ¿Cómo puedo leer solo una entrada de carácter desde la línea de comandos?cómo leer solo un carácter en el script de shell
Usando el comando read
podemos hacerlo?
Deseo una opción similar como getche()
en c. ¿Cómo puedo leer solo una entrada de carácter desde la línea de comandos?cómo leer solo un carácter en el script de shell
Usando el comando read
podemos hacerlo?
En ksh básicamente se puede hacer:
stty raw
REPLY=$(dd bs=1 count=1 2> /dev/null)
stty -raw
En bash, read
puede hacerlo:
read -n1 ans
read -n1
obras para fiesta
El modo stty raw
impide ctrl-c de trabajar y puede atraparte en un bucle de entrada sin salida. Además, la página del manual dice stty -raw
no garantiza que regrese su terminal al mismo estado.
Por lo tanto, construir en dtmilano's answer usando stty -icanon -echo
evita esos problemas.
#/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"
da '0403-010 Un indicador especificado no es válido para este comando. Error. – footy
@footy, el comando de lectura incorporado de bash tiene la opción -n. ¿Qué shell estás usando? –
@glennjackman ksh shell Estoy usando – footy