GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo leer un solo carácter en el script de Shell

En ksh básicamente puedes hacer:

stty raw
REPLY=$(dd bs=1 count=1 2> /dev/null)
stty -raw

read -n1 funciona para bash

El stty raw El modo evita que ctrl-c funcione y puede dejarlo atrapado en un bucle de entrada sin salida. También la página de manual dice stty -raw no se garantiza que devuelva su terminal al mismo estado.

Entonces, construyendo sobre la respuesta de dtmilano 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"

En bash, read puede hacerlo:

read -n1 ans

Linux
  1. ¿Cómo crear un archivo temporal en Shell Script?

  2. ¿Cómo llamar a otro script de Shell como una subrutina?

  3. ¿Cómo crear una animación de rotación usando Shell Script?

  4. Cómo ejecutar un script de shell al inicio

  5. Cómo leer un archivo .properties que contiene claves que tienen un carácter de punto usando el script de Shell

Cómo escribir un script de Shell en Ubuntu

Cómo almacenar un comando de Linux como una variable en el script de Shell

Cómo ejecutar Shell Script como servicio SystemD en Linux

¿Cómo ejecutar un comando en un script de Shell?

¿Cómo leer argumentos de línea de comando en scripts de Shell?

Cómo crear y ejecutar un script de shell en Ubuntu 22.04