Command substitution uses either backticks `command` or $(command). Both the backtick version and the incomplete $() version look valid at first.
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.
Final Answer:
echo $(ls -l) -> Option D
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
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.
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.
Final Answer:
Lists all files and directories inside /tmp one per line -> Option C
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
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.
Step 2: Analyze impact of missing backtick
Without the closing backtick, bash will throw a syntax error and not run the script properly.
Final Answer:
Missing closing backtick for command substitution -> Option A
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
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).
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.
Final Answer:
file_count=$(ls ~ | wc -l) -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.