Bird
Raised Fist0
Bash Scriptingscripting~15 mins

Backticks and $() for command substitution in Bash Scripting - Mini Project: Build & Apply

Choose your learning style10 modes available
Using Backticks and $() for Command Substitution in Bash
📖 Scenario: You are writing a simple bash script to display information about files in a directory. You want to capture the output of commands and use it inside your script.
🎯 Goal: Learn how to use backticks `command` and $(command) to run commands inside your script and store their output in variables.
📋 What You'll Learn
Create a variable with the output of a command using backticks
Create a variable with the output of a command using $() syntax
Use these variables in your script
Print the results to the terminal
💡 Why This Matters
🌍 Real World
Command substitution is used in scripts to capture the output of commands and use it for decisions, calculations, or messages.
💼 Career
Knowing how to capture command output is essential for writing effective bash scripts in system administration, automation, and DevOps roles.
Progress0 / 4 steps
1
Create a variable using backticks for command substitution
Create a variable called file_count_backticks that stores the number of files in the current directory using the command ls | wc -l inside backticks.
Bash Scripting
Hint

Use backticks ` around the command ls | wc -l to capture its output.

2
Create a variable using $() for command substitution
Create a variable called file_count_dollar that stores the number of files in the current directory using the command ls | wc -l inside $( ).
Bash Scripting
Hint

Use $(command) syntax to capture the output of ls | wc -l.

3
Use the variables in a message
Write a line that creates a variable called message with the text: "There are X files (backticks) and Y files ($()) in the directory." where X is the value of file_count_backticks and Y is the value of file_count_dollar. Use double quotes and variable substitution.
Bash Scripting
Hint

Use double quotes and $variable to insert variable values inside the string.

4
Print the message to the terminal
Write a line to print the variable message to the terminal using echo.
Bash Scripting
Hint

Use echo "$message" to print the message with variable values.

Practice

(1/5)
1. What does the command substitution syntax $(date) do in a bash script?
easy
A. Creates a new variable named date
B. Runs the date command and replaces $(date) with its output
C. Comments out the date command
D. Prints the literal string $(date) without running the command

Solution

  1. Step 1: Understand command substitution

    Command substitution runs the command inside $() and replaces it with the command's output.
  2. Step 2: Apply to $(date)

    The date command outputs the current date and time, so $(date) is replaced by that output.
  3. Final Answer:

    Runs the date command and replaces $(date) with its output -> Option B
  4. Quick Check:

    Command substitution = runs command and inserts output [OK]
Hint: Remember: $() runs command and inserts output [OK]
Common Mistakes:
  • Thinking it creates a variable
  • Confusing it with comments
  • Expecting literal string output
2. Which of the following is the preferred syntax for command substitution in bash?
easy
A. echo `ls -l`
B. echo $(ls -l
C. echo $[ls -l]
D. echo $(ls -l)

Solution

  1. Step 1: Identify valid command substitution syntax

    Command substitution uses either backticks `command` or $(command). Both the backtick version and the incomplete $() version look valid at first.
  2. Step 2: Check for best practice and syntax correctness

    echo `ls -l` uses backticks which are valid but less readable and harder to nest. echo $(ls -l) uses $() which is modern and preferred. echo $[ls -l] uses invalid syntax with $[]. echo $(ls -l misses closing parenthesis.
  3. Final Answer:

    echo $(ls -l) -> Option D
  4. Quick Check:

    Use $() for clear command substitution [OK]
Hint: Use $() for command substitution, it's clearer and nestable [OK]
Common Mistakes:
  • Using $[] which is arithmetic expansion, not command substitution
  • Missing closing parenthesis
  • Confusing backticks with other symbols
3. What will be the output of this script snippet?
files=$(ls /tmp)
echo "$files"
medium
A. Shows an error because of missing quotes
B. Prints the literal string '$(ls /tmp)'
C. Lists all files and directories inside /tmp one per line
D. Prints nothing because variable is empty

Solution

  1. Step 1: Understand command substitution with ls

    The command ls /tmp lists files in /tmp. Using files=$(ls /tmp) stores that output as a string with filenames separated by newlines.
  2. Step 2: Echo the variable with quotes

    Using echo "$files" prints the content of files preserving newlines, so it lists all files and directories one per line.
  3. Final Answer:

    Lists all files and directories inside /tmp one per line -> Option C
  4. Quick Check:

    Command substitution stores output string = list of files [OK]
Hint: Command substitution stores output as string, echo prints it [OK]
Common Mistakes:
  • Expecting literal command string output
  • Confusing quotes causing errors
  • Assuming variable is empty
4. Identify the error in this script snippet:
current_dir=`pwd
 echo "Current directory is: $current_dir"
medium
A. Missing closing backtick for command substitution
B. Incorrect use of double quotes
C. Variable name is invalid
D. No error, script runs fine

Solution

  1. Step 1: Check command substitution syntax

    The command substitution using backticks must start and end with backticks. Here, the closing backtick is missing after pwd.
  2. Step 2: Analyze impact of missing backtick

    Without the closing backtick, bash will throw a syntax error and not run the script properly.
  3. Final Answer:

    Missing closing backtick for command substitution -> Option A
  4. Quick Check:

    Backticks must be paired to run commands [OK]
Hint: Always close backticks to avoid syntax errors [OK]
Common Mistakes:
  • Forgetting to close backticks
  • Misplacing quotes inside command substitution
  • Assuming variable names cause errors
5. You want to store the number of files in your home directory in a variable file_count. Which command correctly uses command substitution to do this?
hard
A. file_count=$(ls ~ | wc -l)
B. file_count=`ls ~ wc -l`
C. file_count=$(ls ~ wc -l)
D. file_count=ls ~ | wc -l

Solution

  1. Step 1: Understand the command to count files

    To count files, we list them with ls ~ and pipe to wc -l to count lines (files).
  2. Step 2: Use correct command substitution syntax

    file_count=$(ls ~ | wc -l) correctly uses $(ls ~ | wc -l) to run the full command and store output in file_count. The other options miss the pipe or fail to use command substitution.
  3. Final Answer:

    file_count=$(ls ~ | wc -l) -> Option A
  4. Quick Check:

    Use $() with full command and pipe inside [OK]
Hint: Use $() with full command including pipes for substitution [OK]
Common Mistakes:
  • Missing pipe between commands
  • Using backticks without pipe
  • Assigning command without substitution
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