How To Use The Bash read Command?

The read command is one of the most fundamental commands in Bash scripting. It is used to read input from the user or from a file. In this article, we will explore how to use the read command effectively, with several examples and their output.

Basic Usage of read Command

The most basic usage of the read command is to take input from the user. Here's a simple example

Example

echo "Please enter your name: "
read name
echo "Hello, $name"

When you run this script, it will prompt you to enter your name. After you enter your name, it will greet you with a message. Here's an example of the output

Output

Please enter your name: 
John
Hello, John

Reading Multiple Inputs

The read command can also read multiple inputs at once. Here's an example

Example

echo "Enter your first and last name: "
read first_name last_name
echo "Hello, $first_name $last_name"

In this script, the read command reads two inputs and assigns them to first_name and last_name respectively. Here's an example of the output

Output

Enter your first and last name: 
John Doe
Hello, John Doe

Common read Command Options

Option Description Example Usage
-p Display prompt message read -p "Enter name: " name
-t Set timeout in seconds read -t 5 name
-r Raw input (no backslash escape) read -r line
-s Silent mode (hide input) read -s password
-a Read into array read -a numbers
-d Custom delimiter read -d ';' input

Using a Prompt with read Command

You can use the -p option with the read command to display a prompt before reading the input. Here's an example

Example

read -p "Enter your name: " name
echo "Hello, $name"

Output

Enter your name: John
Hello, John

Reading Input with a Timeout

The read command can be used with a timeout using the -t option. If the user does not provide input within the specified time, the script will continue. Here's an example

read -p "You have 5 seconds to enter your name: " -t 5 name
echo "Hello, ${name:-Guest}"

In this script, if the user does not enter their name within 5 seconds, the script will continue and use "Guest" as the default value.

Reading Input into an Array

The -a option allows you to read input into an array. Here's an example

Example

echo "Enter three numbers separated by space: "
read -a numbers
echo "The numbers are: ${numbers[0]}, ${numbers[1]}, ${numbers[2]}"

Output

Enter three numbers separated by space: 
10 20 30
The numbers are: 10, 20, 30

Reading Input without Backslash Interpretation

The -r option allows you to read input without backslash interpretation. Here's an example

Example

read -r -p "Enter a string: " str
echo "You entered: $str"

Output

Enter a string: Hello\ World
You entered: Hello\ World

Without the -r option, the backslash would be interpreted and not printed

Example

read -p "Enter a string: " str
echo "You entered: $str"

Output

Enter a string: Hello\ World
You entered: Hello World

Silent Mode for Passwords

The -s option allows you to read input in silent mode, which is useful when asking for sensitive information like passwords. Here's an example

Example

read -sp "Enter your password: " password
echo -e "\nYour password length is: ${#password}"

Output

Enter your password: 
Your password length is: 8

Note The actual password is not displayed when you type it in.

Reading from a File

The read command can be used to read input from a file. Here's an example for reading line by line

line_number=1
while read -r line
do
   echo "Line $line_number: $line"
   ((line_number++))
done < file.txt

In this script, the read command reads each line from the file file.txt and prints the line number along with the content. The -r option prevents backslash interpretation.

Reading Input with a Custom Delimiter

The -d option allows you to specify a delimiter to terminate the input. Here's an example

Example

read -d ';' -p "Enter a string (end with ;): " str
echo "You entered: $str"

Output

Enter a string (end with ;): Hello World;
You entered: Hello World

Conclusion

The read command is a versatile tool in Bash scripting that enables interactive input handling. With options like -p for prompts, -t for timeouts, -s for silent input, and -r for raw input, it provides flexible ways to gather user input and process files efficiently in shell scripts.

Updated on: 2026-03-17T09:01:38+05:30

6K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements