Récupérer un caractère au clavier sans utiliser la touche entrée ?

Récupérer un caractère au clavier sans utiliser la touche entrée ? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 21-11-2013 à 17:54:18    

Bonjour,
 
Je souhaite créer un script bash et récupérer un chiffre au clavier sans utiliser la touche entrée.
Un équivalent de "read variable" mais sans avoir besoin de taper entrée pour passer à la ligne suivante du script.
 
Par exemple si j'appui sur la touche "4" je lance une action sans attendre de valider par la touche entrée.
 
J'ai fais des recherches sur le net mais je n'ai rien trouvé.  
Savez-vous comment faire ?  
 
Merci.

Reply

Marsh Posté le 21-11-2013 à 17:54:18   

Reply

Marsh Posté le 21-11-2013 à 19:35:03    

xev sait faire ça. Faudrait voir comment il fonctionne en interne.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 22-11-2013 à 08:17:19    

google sur "getchar in shell", il y a différentes possibilités.


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 22-11-2013 à 11:32:54    

Salut,
 

Code :
  1. read -n1 reponse


 
Extrait du man bash :

             -n nb_car
                     read  s'arrête  après avoir lu nb_car caractères plutôt que d'attendre  
                     une ligne complète en entrée, mais un délimiteur  est  respecté  si  
                     moins  de nb_car caractères ont été lus avant le délimiteur.


---------------
$ man woman
Reply

Marsh Posté le 22-11-2013 à 13:06:08    

zipe31 a écrit :

Salut,
 

Code :
  1. read -n1 reponse


 
Extrait du man bash :

             -n nb_car
                     read  s'arrête  après avoir lu nb_car caractères plutôt que d'attendre  
                     une ligne complète en entrée, mais un délimiteur  est  respecté  si  
                     moins  de nb_car caractères ont été lus avant le délimiteur.



 
faut toujours faire entrée, ce qu'il ne veut pas :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 22-11-2013 à 14:58:22    

black_lord a écrit :

faut toujours faire entrée, ce qu'il ne veut pas :o


 
Non, le -n 1 est là pour ça, dès le 1er caractère entré, il est validé et on passe à la suite. Si on avait mis -n 3, la validation se fait dès le 3e caractère entré  ;)  


---------------
$ man woman
Reply

Marsh Posté le 24-11-2013 à 14:48:53    

zipe31 a écrit :


 
Non, le -n 1 est là pour ça, dès le 1er caractère entré, il est validé et on passe à la suite. Si on avait mis -n 3, la validation se fait dès le 3e caractère entré  ;)  


 
bashisme :o
 
read -k avec zsh. fonctionnalité non portable = mal :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 24-11-2013 à 16:13:24    

nba_pit a écrit :

Bonjour,
Je souhaite créer un script bash et récupérer un chiffre au clavier sans utiliser la touche entrée.
Un équivalent de "read variable" mais sans avoir besoin de taper entrée pour passer à la ligne suivante du script.


 

black_lord a écrit :

bashisme :o
read -k avec zsh. fonctionnalité non portable = mal :o


 
Je réponds juste à la question  :)  
 


---------------
$ man woman
Reply

Marsh Posté le 28-11-2013 à 21:15:50    

Merci pour vos réponse !
 
J'ai essayé read -n1, ca fonctionne très bien lorsque je l'utilise dans un simple script bash (read + echo).
Par contre dès que je lance ce script au démarrage de linux (dans le init.d) j'ai ce message d'erreur :  

Code :
  1. 12 : read : Illegal option -n


 
Je ne comprends pas, je pensai qu'un script qui marche seul marcherait aussi dans un script de démarrage.
 
Si vous pouvez m'aider ...
Merci

Reply

Marsh Posté le 28-11-2013 à 21:24:15    

Ne m'aidez plus !
 
J'ai trouvé, j'avais oublié de marquer :

Code :
  1. #!/bin/bash

au début de mon script.
Désormais ca fonctionne.


Message édité par nba_pit le 28-11-2013 à 21:28:26
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed