Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Backticks and $() for command substitution in Bash Scripting - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Command Substitution Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Output of command substitution with backticks
What is the output of this Bash script snippet?
Bash Scripting
current_date=`date +%Y-%m-%d`
echo "Today is $current_date"
AToday is 2024-06-15
BToday is `date +%Y-%m-%d`
CToday is $(date +%Y-%m-%d)
DSyntax error
Attempts:
2 left
💡 Hint
Backticks run the command inside and replace it with the output.
💻 Command Output
intermediate
2:00remaining
Output of command substitution with $()
What will this Bash script print?
Bash Scripting
files_count=$(ls | wc -l)
echo "Number of files: $files_count"
ANumber of files: $(ls | wc -l)
BNumber of files: ls | wc -l
CNumber of files: 5
DSyntax error
Attempts:
2 left
💡 Hint
The $() runs the command inside and replaces it with the output.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in command substitution
Which option contains a syntax error in command substitution?
Aoutput=$ls -l
Boutput=$(ls -l)
Coutput=`ls -l`
D`l- sl`=tuptuo
Attempts:
2 left
💡 Hint
Command substitution requires backticks or $() around the command.
🔧 Debug
advanced
2:00remaining
Why does this command substitution fail?
Given the script: result=`grep 'pattern file.txt` echo "$result" Why does this script fail?
Bash Scripting
result=`grep 'pattern file.txt`
echo "$result"
ANo error, runs fine
BMissing closing quote for pattern
Cgrep command is invalid
DMissing closing backtick
Attempts:
2 left
💡 Hint
Check the quotes inside the backticks carefully.
🚀 Application
expert
3:00remaining
Combine command substitution with arithmetic expansion
What is the output of this Bash script? count=$(ls | wc -l) next=$((count + 1)) echo "Next number is $next"
Bash Scripting
count=$(ls | wc -l)
next=$((count + 1))
echo "Next number is $next"
ASyntax error
BNext number is count + 1
CNext number is $(ls | wc -l + 1)
DNext number is 6
Attempts:
2 left
💡 Hint
Command substitution gets the count, arithmetic expansion adds 1.

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