GNU/Linux >> Tutoriels Linux >  >> Linux

Comment lire un seul caractère dans un script shell

En ksh, vous pouvez essentiellement faire :

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

read -n1 fonctionne pour bash

Le stty raw le mode empêche ctrl-c de fonctionner et peut vous coincer dans une boucle d'entrée sans issue. Aussi la page de manuel dit stty -raw n'est pas garanti de remettre votre terminal dans le même état.

Donc, en s'appuyant sur la réponse de dtmilano en utilisant stty -icanon -echo évite ces problèmes.

#/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 bas, read peut le faire :

read -n1 ans

Linux
  1. Comment gérer les commutateurs dans un script shell ?

  2. Comment appeler un autre script shell comme un sous-programme ?

  3. Comment lire les balises MP3 dans Shell ?

  4. Comment créer une animation de rotation à l'aide de Shell Script ?

  5. Comment exécuter des scripts Python à partir du shell

Comment écrire un script shell dans Ubuntu

Comment stocker une commande Linux en tant que variable dans un script shell

Comment exécuter un script Shell en tant que service SystemD sous Linux

Comment exécuter une commande dans un script shell ?

Comment lire les arguments de ligne de commande dans les scripts shell ?

Comment créer et exécuter un script shell dans Ubuntu 22.04