Skip to main content

Prompt a user for input from a shell script (Bash shell script), and then read the input the user provides.

How to prompt and read user input
=================================

**Question**: How do I prompt a user for input from a shell script (Bash shell script), and then read the input the user provides?

**Answer**: I usually use the shell script `read` function to read input from a shell script. Here are two slightly different versions of the same shell script. 

### Version 1

This first version prompts the user for input only once, and then dies if the user doesn't give a correst `Y/N` answer:

	#!/bin/sh
	
	# (1) prompt user, and read command line argument
	read -p "Run the cron script now? " answer
	
	# (2) handle the command line argument we were given
	while true
	do
		case $answer in
		[yY]* ) /usr/bin/wget -O - -q -t 1 http://www.example.com/cron.php
				echo "Okay, just ran the cron script."
				break;;
		[nN]* ) exit;;
			* ) echo "Dude, just enter Y or N, please."; break ;;
		esac
	done

### Version 2

This second version stays in a loop until the user supplies a `Y/N` answer:

	#!/bin/sh
	
	while true
	do
		# (1) prompt user, and read command line argument
		read -p "Run the cron script now? " answer
		
		# (2) handle the input we were given
		case $answer in
			[yY]* ) /usr/bin/wget -O - -q -t 1 http://www.example.com/cron.php
					echo "Okay, just ran the cron script."
					break;;
			[nN]* ) exit;;
				* ) echo "Dude, just enter Y or N, please.";;
		esac	
	done

---

[Bash shell script - how to prompt and read user input](http://alvinalexander.com/linux-unix/shell-script-how-prompt-read-user-input-bash)