Bird
Raised Fist0
Bash Scriptingscripting~5 mins

Double quotes (variable expansion) in Bash Scripting

Choose your learning style10 modes available
Introduction
Double quotes let you use variables inside text so the shell replaces them with their values.
You want to print a message that includes a variable value.
You need to combine text and variables in a command.
You want to keep spaces inside a variable when using it.
You want to avoid word splitting but still expand variables.
You want to include special characters inside a string with variables.
Syntax
Bash Scripting
echo "Hello, $USER!"
Use double quotes to allow variables like $USER to be replaced by their values.
Double quotes keep spaces and special characters inside the string intact.
Examples
Prints 'Hello, Alice!' by replacing $name with its value.
Bash Scripting
name="Alice"
echo "Hello, $name!"
Shows how a number variable is expanded inside double quotes.
Bash Scripting
count=5
echo "You have $count new messages."
Keeps the space inside the variable when printing.
Bash Scripting
path="/home/user folder"
echo "Path is: $path"
Sample Program
This script sets two variables and prints a welcome message using double quotes to expand them.
Bash Scripting
#!/bin/bash

user="Bob"
message="Welcome to the system"
echo "$message, $user!"
OutputSuccess
Important Notes
If you use single quotes (' '), variables will NOT expand.
Double quotes protect spaces and special characters but still allow variable expansion.
To include a literal dollar sign, escape it with a backslash like \$.
Summary
Double quotes let variables inside strings expand to their values.
They keep spaces and special characters safe inside the string.
Use double quotes when you want to mix text and variables in bash.

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