Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Double quotes (variable expansion) in Bash Scripting - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Double Quotes Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output of this Bash script?
Consider the following Bash script:

name=World

echo "Hello $name!"
echo 'Hello $name!'

What will be printed when this script runs?
Bash Scripting
name=World

echo "Hello $name!"
echo 'Hello $name!'
AHello World!\nHello $name!
BHello $name!\nHello $name!
CHello World!\nHello World!
DHello $name!\nHello World!
Attempts:
2 left
💡 Hint
Remember that double quotes allow variable expansion, but single quotes do not.
💻 Command Output
intermediate
2:00remaining
What does this script print?
Given this Bash script:

var=5

echo "$var is a number"
echo '$var is a number'

What is the output?
Bash Scripting
var=5

echo "$var is a number"
echo '$var is a number'
A$var is a number\n$var is a number
B$var is a number\n5 is a number
C5 is a number\n$var is a number
D5 is a number\n5 is a number
Attempts:
2 left
💡 Hint
Check how variables behave inside double vs single quotes.
🔧 Debug
advanced
2:00remaining
Why does this script not print the variable value?
Look at this Bash script:

greeting=Hello

echo '$greeting, friend!'

Why does it print '$greeting, friend!' instead of 'Hello, friend!'?
Bash Scripting
greeting=Hello

echo '$greeting, friend!'
ABecause the variable greeting is not defined properly.
BBecause single quotes prevent variable expansion, so $greeting is printed literally.
CBecause echo does not support variables inside quotes.
DBecause the variable name is misspelled.
Attempts:
2 left
💡 Hint
Try changing single quotes to double quotes.
💻 Command Output
advanced
2:00remaining
What is the output of this script with mixed quotes?
Consider this Bash script:

user=Alice

echo "User is '$user'"
echo 'User is "$user"'

What will be printed?
Bash Scripting
user=Alice

echo "User is '$user'"
echo 'User is "$user"'
AUser is 'Alice'\nUser is "$user"
BUser is '$user'\nUser is "Alice"
CUser is 'Alice'\nUser is "Alice"
DUser is $user\nUser is $user
Attempts:
2 left
💡 Hint
Remember how quotes inside quotes affect variable expansion.
🚀 Application
expert
2:00remaining
How many items are in the array after this script runs?
Given this Bash script:

items="apple banana cherry"

arr=($items)

echo ${#arr[@]}

What number will be printed?
Bash Scripting
items="apple banana cherry"

arr=($items)

echo ${#arr[@]}
A1
B0
CSyntaxError
D3
Attempts:
2 left
💡 Hint
Check how the string is split into array elements.

Practice

(1/5)
1. What happens when you use double quotes around a variable in bash, like "$name"?
easy
A. The variable name is replaced by its value inside the quotes.
B. The variable name is treated as plain text, not replaced.
C. The shell throws a syntax error.
D. The variable is removed from the string.

Solution

  1. Step 1: Understand variable expansion in double quotes

    In bash, variables inside double quotes are replaced by their values.
  2. Step 2: Compare with other quote types

    Single quotes prevent expansion, but double quotes allow it while preserving spaces.
  3. Final Answer:

    The variable name is replaced by its value inside the quotes. -> Option A
  4. Quick Check:

    Double quotes expand variables = A [OK]
Hint: Double quotes expand variables, single quotes do not [OK]
Common Mistakes:
  • Thinking variables inside double quotes are not expanded
  • Confusing single and double quotes
  • Expecting syntax error with double quotes
2. Which of the following is the correct way to print the value of variable user with a greeting using double quotes in bash?
easy
A. echo 'Hello, $user!'
B. echo "Hello, 'user'!"
C. echo Hello, $user!
D. echo "Hello, $user!"

Solution

  1. Step 1: Identify correct quoting for variable expansion

    Double quotes allow variable $user to expand inside the string.
  2. Step 2: Check each option

    echo 'Hello, $user!' uses single quotes, so $user is literal. echo Hello, $user! lacks quotes, which can cause word splitting. echo "Hello, 'user'!" quotes 'user' literally inside double quotes.
  3. Final Answer:

    echo "Hello, $user!" -> Option D
  4. Quick Check:

    Use double quotes to expand variables in strings = B [OK]
Hint: Use double quotes to expand variables inside strings [OK]
Common Mistakes:
  • Using single quotes which prevent expansion
  • Not quoting strings with spaces
  • Mixing single and double quotes incorrectly
3. Given the script:
name="Alice"
echo "Hello, $name!"
echo 'Hello, $name!'

What is the output?
medium
A. Hello, Alice! Hello, Alice!
B. Hello, Alice! Hello, $name!
C. Hello, $name! Hello, Alice!
D. Hello, $name! Hello, $name!

Solution

  1. Step 1: Analyze first echo with double quotes

    Double quotes expand $name to "Alice", so output is "Hello, Alice!".
  2. Step 2: Analyze second echo with single quotes

    Single quotes prevent expansion, so output is literally "Hello, $name!".
  3. Final Answer:

    Hello, Alice! Hello, $name! -> Option B
  4. Quick Check:

    Double quotes expand, single quotes do not = A [OK]
Hint: Double quotes expand variables; single quotes print literally [OK]
Common Mistakes:
  • Assuming single quotes expand variables
  • Confusing output order
  • Ignoring newline between echo commands
4. Consider this script snippet:
file="my file.txt"
echo $file
ls "$file"

What is the problem and how to fix it?
medium
A. First echo should use double quotes to preserve spaces: echo "$file".
B. Second line should remove quotes: ls $file.
C. No problem; script works fine.
D. Variable should be declared without quotes: file=my file.txt.

Solution

  1. Step 1: Identify issue with first echo

    Without quotes, echo $file splits "my file.txt" into two words, printing as two separate arguments.
  2. Step 2: Fix by adding double quotes

    Using echo "$file" preserves the space and prints the full filename correctly.
  3. Final Answer:

    First echo should use double quotes to preserve spaces: echo "$file". -> Option A
  4. Quick Check:

    Quote variables to keep spaces intact = C [OK]
Hint: Quote variables to keep spaces safe in commands [OK]
Common Mistakes:
  • Not quoting variables with spaces
  • Removing quotes from commands that need them
  • Declaring variables without quotes causing errors
5. You want to create a script that prints a message with a variable count inside double quotes, but only if count is not empty. Which is the best way to write this?
hard
A. if [ $count ]; then echo "Count is $count"; fi
B. if [ $count ]; then echo 'Count is $count'; fi
C. if [ "$count" ]; then echo "Count is $count"; fi
D. if [ "$count" ]; then echo 'Count is $count'; fi

Solution

  1. Step 1: Check condition with quotes

    Using [ "$count" ] safely tests if count is non-empty, even if it contains spaces or is unset.
  2. Step 2: Print message with double quotes

    Using double quotes in echo expands $count properly inside the string.
  3. Final Answer:

    if [ "$count" ]; then echo "Count is $count"; fi -> Option C
  4. Quick Check:

    Quote variables in tests and output for safety = D [OK]
Hint: Quote variables in tests and output to avoid errors [OK]
Common Mistakes:
  • Not quoting variable in test causing errors
  • Using single quotes in echo preventing expansion
  • Testing variable without quotes causing syntax errors
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard