Arraste Ctrl + C e repita o loop while no Bash

1

Eu estava tentando capturar Ctrl C ou Ctrl Z e limpar a tela e repetir o loop sem saindo - está funcionando, mas eu preciso pressionar Enter para repetir o loop.

#!/bin/bash
trap 'clear' 2 20
while :
do
        clear
        echo -e "\n\t1. Create a user"
        echo -e "\t2. Create a Group"
        echo -e "\t3. Delete user"
        echo -e "\t4. Reset Password"
        echo -e "\n\tSelect one of the option : \c"
        read OPT
done

Ao pressionar Ctrl C ou Ctrl Z , limpa a tela, mas não exibe o menu novamente.

Eu quero usar isso como um script de logon no qual um usuário faz login e só consegue esse menu funcionar. Se o usuário digitar Ctrl C ou Ctrl Z , o script terá que exibir novamente o menu, sem chegar ao shell.

    
por KumarJohn 25.04.2013 / 03:33

1 resposta

1
#!/bin/bash

trap 'menu' 2 20

menu()
{
   clear
   echo -e "\n\t1. Create a user"
   echo -e "\t2. Create a Group"
   echo -e "\t3. Delete user"
   echo -e "\t4. Reset Password"
   echo -e "\n\tSelect one of the option : \c"
}

while :; do
   menu
   read OPT
done

Se você não quiser pressionar a tecla Enter para repetir o loop, altere o comando de leitura para:

read -n 1 OPT
    
por 25.04.2013 / 04:36

Tags