Fundamentals 7 min read

Master Bash read Command: Interactive Input Techniques and Advanced Options

This guide explains how to use Bash's built‑in read command for interactive scripts, covering basic syntax, reading single or multiple values, prompting, timeouts, hidden input, default values, password handling, and multi‑line input with clear code examples.

Liangxu Linux
Liangxu Linux
Liangxu Linux
Master Bash read Command: Interactive Input Techniques and Advanced Options

Introduction

The read builtin in Bash reads user input from standard input and assigns it to variables, enabling interactive shell scripts that are more flexible and user‑friendly.

Basic Usage

The basic syntax is: read [options] variable_name Examples:

Read a single name and greet the user:

echo "Please enter your name:"
read name
echo "Hello, $name! Welcome to our system."

Read multiple values (name and age) separated by spaces:

echo "Please enter your name and age:"
read name age
echo "Hello, $name! You are $age years old."

Advanced Usage

Beyond the basics, read supports several options to enhance interactivity.

1. Prompt Message (-p)

read -p "Please enter your name: " name
echo "Hello, $name!"

2. Timeout (-t)

Terminate the read after a specified number of seconds:

if read -t 10 -p "Please enter your name in 10 seconds: " name; then
    echo "Hello, $name!"
else
    echo "Time out. Exiting..."
fi

3. Hide Input (-s)

Useful for passwords:

read -s -p "Please enter your password: " password
echo "Password entered."

4. Default Value (-e)

Allow the user to accept a default when pressing Enter:

read -e -p "Enter your name [default: John]: " name
name=${name:-John}
echo "Hello, $name!"

5. Read Multiple Lines (-r with while loop)

Collect multi‑line input until Ctrl‑D:

echo "Enter your multi‑line input (press Ctrl+D to finish):"
while IFS= read -r line; do
    content="$content$line
"
done
echo -e "You entered:
$content"

Comprehensive Example

The script below combines the above techniques into a single interactive program:

#!/bin/bash
# Prompt for name
read -p "Please enter your name: " name
# Prompt for age
read -p "Please enter your age: " age
# Greet the user
echo "Hello, $name! You are $age years old."
# Prompt with default value
read -e -p "Please enter your name [default: John]: " name
name=${name:-John}
# Prompt for password (hidden)
read -r -s -p "Enter your password: " password
# Collect multi‑line comments
echo "
Please enter your comments (press Ctrl+D to finish):"
while IFS= read -r line; do
    comments="$comments$line
"
done
echo -e "
Hello, $name! Thank you for your input:"
echo -e "Password: ********"
echo -e "Comments:
$comments"

Conclusion

By mastering the read command and its options ( -p, -t, -s, -e, -r), you can create robust, interactive Bash scripts that handle prompts, timeouts, hidden input, default values, and multi‑line data, greatly improving script usability and flexibility.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Shell scriptinginteractive scriptread command
Liangxu Linux
Written by

Liangxu Linux

Liangxu, a self‑taught IT professional now working as a Linux development engineer at a Fortune 500 multinational, shares extensive Linux knowledge—fundamentals, applications, tools, plus Git, databases, Raspberry Pi, etc. (Reply “Linux” to receive essential resources.)

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.