📖 Scenario: You are creating a simple script to ask a user for their username and password. For security, the password should not be shown on the screen as the user types it.
🎯 Goal: Build a bash script that asks for a username and a password. The password input should be silent (hidden) using read -s. Then display a message showing the username and a confirmation that the password was received.
📋 What You'll Learn
Create a variable username to store the user's input.
Create a variable password to store the user's input silently using read -s.
Print a message showing the username and a confirmation that the password was entered.
💡 Why This Matters
🌍 Real World
Scripts often need to ask users for passwords without showing them on screen to keep them safe.
💼 Career
Knowing how to securely get passwords in scripts is important for system administrators and developers automating tasks.
Progress0 / 4 steps
1
DATA SETUP: Ask for the username
Write a line to ask the user to enter their username and store it in a variable called username using read.
Bash Scripting
Hint
Use read -p "Enter your username: " username to prompt and save input.
2
CONFIGURATION: Prepare to read password silently
Write a line to prompt the user to enter their password silently and save it in a variable called password using read -s.
Bash Scripting
Hint
Use read -s -p "Enter your password: " password to read password silently.
3
CORE LOGIC: Add a newline after password input
Add a line to print a newline after the silent password input so the next output appears on a new line.
Bash Scripting
Hint
Use echo with no arguments to print a newline.
4
OUTPUT: Display username and password confirmation
Write a line to print: Username: [username] and Password received. using echo and the variable username.
Bash Scripting
Hint
Use echo "Username: $username" and echo "Password received." to show output.
Practice
(1/5)
1. What does the -s option do when used with the read command in bash scripting?
easy
A. It hides the user input on the terminal (silent input).
B. It shows the input characters in uppercase.
C. It saves the input to a file automatically.
D. It pauses the script until a key is pressed.
Solution
Step 1: Understand the purpose of read -s
The -s option in read hides the input typed by the user, making it silent on the terminal.
Step 2: Compare with other options
Other options do not hide input; -s is specifically for silent input, useful for passwords.
Final Answer:
It hides the user input on the terminal (silent input). -> Option A
Quick Check:
read -s = silent input [OK]
Hint: Remember: -s means silent input, no characters shown [OK]
Common Mistakes:
Thinking -s shows input in uppercase
Confusing -s with saving input to file
Assuming -s pauses the script
2. Which of the following is the correct syntax to silently read a password with a prompt in bash?
easy
A. read -p "Enter password:" password -s
B. read password -p -s "Enter password:"
C. read -s -p "Enter password:" password
D. read password -s -p "Enter password:"
Solution
Step 1: Recall correct option order for read
The options -s and -p must come before the variable name.
Step 2: Check each option's position
read -s -p "Enter password:" password correctly places -s and -p before the variable password.
Final Answer:
read -s -p "Enter password:" password -> Option C
Quick Check:
Options before variable = correct syntax [OK]
Hint: Options (-s, -p) always come before variable name [OK]
Common Mistakes:
Placing options after variable name
Mixing order of -s and -p incorrectly
Using -p without quotes for prompt
3. What will be the output of this script snippet?
A. The prompt appears, input is visible, then prints 'You entered: [input]'.
B. The prompt does not appear, input is visible, then prints 'You entered: [input]'.
C. The script throws a syntax error.
D. The prompt 'Enter secret: ' appears, input is hidden, then prints 'You entered: [input]'.
Solution
Step 1: Analyze the read -s -p behavior
The prompt string is shown, but the input typed is hidden (silent).
Step 2: Understand the echo output
After input, the script prints the entered value with the message.
Final Answer:
The prompt 'Enter secret: ' appears, input is hidden, then prints 'You entered: [input]'. -> Option D
Quick Check:
read -s -p shows prompt, hides input [OK]
Hint: Prompt shows, input hidden, echo prints input [OK]
Common Mistakes:
Assuming input is visible with -s
Thinking prompt won't show
Expecting syntax error
4. Identify the error in this script snippet:
read -p "Enter password:" password -s
echo "Password is $password"
medium
A. The prompt string is missing quotes.
B. The -s option is placed after the variable name.
C. The variable name should be before options.
D. There is no error; the script works fine.
Solution
Step 1: Check option placement in read
Options like -s must come before the variable name; here it is after.
Step 2: Understand the consequences
Placing -s after the variable name treats it as another variable name instead of an option, so input is not hidden.
Final Answer:
The -s option is placed after the variable name. -> Option B
Quick Check:
Options after variable = treated as names [OK]
Hint: Put all options before variable name to avoid errors [OK]
Common Mistakes:
Placing options after variable name
Assuming the script hides input correctly
Assuming prompt needs no quotes
5. You want to create a bash script that asks the user for a password silently, then confirms the password by asking again silently. Which script snippet correctly implements this?
hard
A. read -s -p "Enter password: " pass
read -s -p "Confirm password: " pass2
if [[ "$pass" == "$pass2" ]]; then echo "Passwords match"; else echo "Mismatch"; fi
B. read -p "Enter password: " -s pass
read -p "Confirm password: " -s pass2
if [ $pass = $pass2 ]; then echo "Passwords match"; else echo "Mismatch"; fi
C. read -s pass "Enter password: "
read -s pass2 "Confirm password: "
if [[ $pass == $pass2 ]]; then echo "Passwords match"; else echo "Mismatch"; fi
D. read pass -s -p "Enter password: "
read pass2 -s -p "Confirm password: "
if [[ "$pass" = "$pass2" ]]; then echo "Passwords match"; else echo "Mismatch"; fi
Solution
Step 1: Verify correct syntax for silent input with prompt
The read -s -p "Enter password: " pass
read -s -p "Confirm password: " pass2
if [[ "$pass" == "$pass2" ]]; then echo "Passwords match"; else echo "Mismatch"; fi uses read -s -p "prompt" variable correctly for both inputs.
Step 2: Check password comparison syntax
The read -s -p "Enter password: " pass
read -s -p "Confirm password: " pass2
if [[ "$pass" == "$pass2" ]]; then echo "Passwords match"; else echo "Mismatch"; fi uses double brackets and quotes around variables, which is safe and correct for string comparison.
Final Answer:
read -s -p "Enter password: " pass
read -s -p "Confirm password: " pass2
if [[ "$pass" == "$pass2" ]]; then echo "Passwords match"; else echo "Mismatch"; fi -> Option A
Quick Check:
Correct option order and safe comparison = read -s -p "Enter password: " pass
read -s -p "Confirm password: " pass2
if [[ "$pass" == "$pass2" ]]; then echo "Passwords match"; else echo "Mismatch"; fi [OK]
Hint: Use read -s -p and double brackets with quotes for comparison [OK]
Common Mistakes:
Placing options after variable name
Using single brackets without quotes for strings
Incorrect order of arguments in read
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.