Pausa a execução e espera pela entrada do usuário

15

Eu tenho um script que estou criando e tenho um problema com ele: gostaria de pausar a execução e aguardar a entrada do usuário. Eu pensei que eu tinha com o comando read -p -n 1 $foo , mas o sistema está tendo problemas com este comando. Aqui está o meu script atual:

#!/bin/sh

# Ititialization

mainmenu () {
  echo "Press 1 to update your system"
  echo "Press 2 to install samba"
  echo "Press 3 to install vsFTPd"
  echo "Press 4 to install the current version of Webmin"
  echo "Press 5 to configure samba for Active Directory"
  echo "Press x to exit the script"
  read -n 1 -p "Input Selection:" mainmenuinput
  if [ "$mainmenuinput" = "1" ]; then
            updatesystem
        elif [ "$mainmenuinput" = "2" ]; then
            installsamba
        elif [ "$mainmenuinput" = "3" ]; then
            installvsftpd
        elif [ "$mainmenuinput" = "4" ]; then
            installwebmin
        elif [ "$mainmenuinput" = "5" ]; then
            configuresambaforactivedirectory
        elif [ "$mainmenuinput" = "x" ];then
            quitprogram
        elif [ "$mainmenuinput" = "X" ];then
            quitprogram
        else
            echo "You have entered an invallid selection!"
            echo "Please try again!"
            echo ""
            echo "Press any key to continue..."
            read -n 1
            clear
            mainmenu
        fi
}

# This builds the main menu and routs the user to the function selected.

mainmenu

# This executes the main menu function.
# Let the fun begin!!!! WOOT WOOT!!!!

Você pode notar na função mainmenu a entrada read -n 1 -p "text goes here". É aí que estou tendo o problema de acordo com o Ubuntu. Alguém pode me dizer o que está errado? obrigado!

    
por Elliot Labs 10.04.2014 / 22:43

1 resposta

17

Deve ser:

read  -n 1 -p "Input Selection:" mainmenuinput

Precisa colocar a% flag n , já que isso é dizer a leitura para executar depois que os caracteres N forem digitados, não espere por uma linha inteira. Verifique os help read e para obter detalhes .

    
por NGRhodes 10.04.2014 / 23:07

Tags