Pergunta do script Bash - pular tecla enter apertar [duplicata]

1

Aqui está uma parte do meu script:

read main_menu

case "$main_menu" in

    "0" )   exit
            ;;
    "1" )   cp /etc/bamt/cgminer.conf.X11 /etc/bamt/cgminer.conf;
            sudo mine restart;
            ;;

Como posso fazer isso depois que o usuário digita 0 ou 1, 2 etc, ele não precisa pressionar a tecla Enter ? Praticamente, quando você digita o número, ele pula diretamente para o próximo menu ou função sem a necessidade de pressionar Enter .

Você pode me ajudar a implementá-lo aqui?

while :
do
    echo -e "\n Test script"
    echo -e "\t (0) Exit"
    echo -e "\t (1) Option 1"
    echo -n "Enter choice:"
      read main_menu
      case "$main_menu" in
         "0" ) exit
         ;;
         "1" ) exit
         ;;
esac
done
    
por Azalix 15.07.2014 / 11:32

1 resposta

7

Bash read suporta um número de opções , entre elas -n 1 :

$ read -n 1 main_menu
1$ echo $main_menu
1

A opção -n significa que:

read returns after reading nchars characters rather than waiting for a complete line of input, but honor a delimiter if fewer than nchars characters are read before the delimiter.

-n 1 diz a read para retornar depois de ler um único caractere de entrada, então assim que o usuário pressionar 1 então read irá parar e salvar a entrada na variável. / p>     

por 15.07.2014 / 11:36