I have a script that I am making and I have an issue with it: I would like to pause execution and wait for user input. I thought that I had it with the read -p -n 1 $foo command but the system is having issues with this command. Here is my current script:
#!/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!!!!You may notice at the mainmenu function the read -n 1 -p "text goes here" entry. That is where I am having the issue according to ubuntu. Can somebody tell me what is going wrong? thanks!
1 Answer
Should be:
read -n 1 -p "Input Selection:" mainmenuinputNeed to put the n flag after, as that is is telling read to execute after N characters are entered, do not wait for an entire line. Check help read and this for details.