Bash Script - How to Read User Input

The linux read command is used to take a user input from the command line. This is useful when we want to provide user interactivity at runtime.

The read syntax is:

read [options] variable_name

We can then use the $ sign in front of the variable name to access its value, e.g. $variable_name.

Bash Script to Read User Input

Start by creating a file with .sh extension, e.g.:

touch user_input.sh

Then open then file in your favorite editor and type the following:

#!/bin/bash

echo "Enter your name:"
read name
echo "Enter your age:"
read age
echo "Hello" $name, "you are" $age "years old"

The above script takes a user’s name and age.

To run the above script, open a terminal and type:

$ sh user_input.sh

Enter your name:
DevQA
Enter your age:
12
Hello DevQA, you are 12 years old

Prompt Message With read Command

To prompt a message with the read command, we use the -p option.

For example:

$ read -p "Enter your username: " username

If we don’t want the characters to be displayed on the screen, we need to use the -s option with the read command. This is useful for when we are reading passwords.

For example:

$ read -sp "Enter your password: " password

Your bash script to read the above user inputs would look like:

#!/bin/bash

read -p "Enter your username: " username
read -sp "Enter your password: " password

echo -e "\nYour username is $username and Password is $password"

The output is:

$ sh user_input.sh

Enter your username: devqa
Enter your password:
Your username is devqa and Password is secret