How to Get User Input in Linux Shell Script
-
Using the
read
Command -
Using the
select
Statement - Using Command-Line Arguments
- Reading Passwords Securely
- Conclusion
- FAQ

Getting user input in Linux shell scripts is a fundamental skill for anyone looking to automate tasks or create interactive scripts. Whether you’re writing a simple script to gather user data or developing a more complex application, understanding how to capture input from users is essential.
In this article, we will explore various methods to achieve this, including the read
command, the select
statement, and other tools available in the Linux shell environment. By the end of this guide, you will have a solid understanding of how to effectively gather user input in your shell scripts, making your scripts more dynamic and user-friendly.
Using the read
Command
One of the most straightforward ways to get user input in a Linux shell script is by using the read
command. This command allows you to prompt the user for input and store that input in a variable for later use.
Here’s a simple example of how to use the read
command:
#!/bin/bash
echo "Please enter your name:"
read name
echo "Hello, $name!"
Output:
Please enter your name:
John
Hello, John!
In this example, we start by printing a message that prompts the user to enter their name. The read name
command then waits for the user to type their name and press Enter. Once the user enters their name, it gets stored in the variable name
. Finally, we use the echo
command to greet the user by name. This method is simple yet powerful, allowing you to gather any kind of input from users, whether it’s a name, a number, or any other text.
Using the select
Statement
The select
statement in bash is an excellent way to create interactive menus. It allows users to choose from a list of options, making it perfect for scripts that require user decisions.
Here’s how you can use the select
statement:
#!/bin/bash
echo "Select your favorite fruit:"
select fruit in "Apple" "Banana" "Cherry" "Quit"
do
case $fruit in
"Apple")
echo "You selected Apple."
;;
"Banana")
echo "You selected Banana."
;;
"Cherry")
echo "You selected Cherry."
;;
"Quit")
echo "Exiting."
break
;;
*)
echo "Invalid selection. Please try again."
;;
esac
done
Output:
Select your favorite fruit:
1) Apple
2) Banana
3) Cherry
4) Quit
1
You selected Apple.
In this script, the select
statement generates a numbered menu based on the options provided. When the user makes a selection, the corresponding value is stored in the variable fruit
. The case
statement then evaluates the selection and executes the appropriate command based on the user’s choice. If the user selects “Quit,” the script exits gracefully. This method is particularly useful for scripts that require user input from a predefined set of choices.
Using Command-Line Arguments
Another way to get input in a Linux shell script is by using command-line arguments. This method is particularly useful when you want to pass parameters directly when executing the script.
Here’s a simple example:
#!/bin/bash
if [ $# -eq 0 ]; then
echo "No arguments provided. Please provide a name."
exit 1
fi
echo "Hello, $1!"
Output:
Hello, John!
In this example, we first check if any arguments were provided using $#
, which counts the number of arguments. If no arguments are given, the script prompts the user to provide a name and exits. If an argument is supplied, it greets the user with the name passed as the first argument using $1
. This method allows you to create scripts that can be easily integrated into other processes or called with specific parameters.
Reading Passwords Securely
When dealing with sensitive information, such as passwords, it’s important to read user input securely. The read
command has an option to hide input, making it ideal for such cases.
Here’s how to read a password securely:
#!/bin/bash
echo "Enter your password:"
read -s password
echo "Password accepted."
Output:
Enter your password:
Password accepted.
In this example, the -s
option in the read
command suppresses the output, preventing the password from being displayed on the screen as the user types. This method ensures that sensitive information is kept confidential, making it suitable for scripts that require user authentication or similar tasks.
Conclusion
Getting user input in Linux shell scripts is a vital skill that enhances the interactivity and functionality of your scripts. Whether you choose to use the read
command, the select
statement, command-line arguments, or secure password input, each method offers unique advantages tailored to various scenarios. By mastering these techniques, you can create more dynamic and user-friendly scripts that cater to your specific needs. So, the next time you write a shell script, consider how user input can enhance its capabilities.
FAQ
-
What is the
read
command in Linux?
Theread
command is used to take input from the user in a shell script and store it in a variable. -
How do I create a menu in a shell script?
You can create a menu using theselect
statement, which allows users to choose from a list of options. -
Can I pass arguments to a shell script?
Yes, you can pass command-line arguments to a shell script, which can be accessed using special variables like$1
,$2
, etc. -
How can I read a password securely in a shell script?
You can use theread
command with the-s
option to read passwords without displaying them on the screen. -
What are the advantages of using user input in shell scripts?
User input allows scripts to be more dynamic, enabling personalized interactions and making scripts adaptable to different situations.
Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.
LinkedIn