Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Why debugging saves hours in Bash Scripting - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Debugging 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 script snippet?
Consider this bash script snippet that tries to list files and count them:
files=$(ls /tmp)
echo $files
count=$(echo $files | wc -w)
echo $count
What will be the output if /tmp contains exactly three files named a.txt, b.txt, and c.txt?
Bash Scripting
files=$(ls /tmp)
echo $files
count=$(echo $files | wc -w)
echo $count
A
a.txt b.txt c.txt
3
B
a.txt
b.txt
c.txt
3
C
a.txt b.txt c.txt
1
D
a.txt
b.txt
c.txt
1
Attempts:
2 left
💡 Hint
Think about how command substitution and word splitting work in bash.
🔧 Debug
intermediate
2:00remaining
Why does this script fail to count files correctly?
This script tries to count the number of files in /var/log:
count=$(ls /var/log | wc -l)
echo "There are $count files."
But it sometimes gives wrong counts or errors. Why?
Bash Scripting
count=$(ls /var/log | wc -l)
echo "There are $count files."
ABecause 'ls' may output color codes that wc counts as extra lines.
BBecause 'ls' outputs filenames with newlines, so wc -l counts lines correctly.
CBecause some filenames have spaces, causing ls output to be split incorrectly.
DBecause 'ls' can output directories and files, so count is not just files.
Attempts:
2 left
💡 Hint
ls lists everything in the directory: files, directories, symlinks, etc. Does it filter to files only?
🚀 Application
advanced
2:00remaining
Which script correctly counts files including those with spaces?
You want to count all files in /home/user/docs, including those with spaces in names. Which script correctly does this?
A
count=$(find /home/user/docs -type f | wc -l)
echo $count
B
count=$(ls /home/user/docs | wc -l)
echo $count
C
count=$(find /home/user/docs -type f -print0 | wc -l)
echo $count
D
count=$(ls -1 /home/user/docs | wc -w)
echo $count
Attempts:
2 left
💡 Hint
Think about which command handles spaces safely and counts files correctly.
🧠 Conceptual
advanced
2:00remaining
Why is debugging important in scripting automation?
Which statement best explains why debugging saves hours in scripting and automation?
ABecause debugging allows scripts to run faster by optimizing code automatically.
BBecause debugging removes the need for testing scripts before use.
CBecause debugging helps find and fix errors early, preventing bigger problems later.
DBecause debugging replaces the need for writing comments and documentation.
Attempts:
2 left
💡 Hint
Think about the role of debugging in catching mistakes.
📝 Syntax
expert
2:00remaining
What error does this bash script produce?
What error will this script produce?
for file in $(ls /etc/passwd); do
  echo $file
 done
Bash Scripting
for file in $(ls /etc/passwd); do
  echo $file
 done
ASyntaxError due to missing semicolon after 'do'.
BNo error, prints '/etc/passwd'.
CRuntime error: 'ls' cannot list a file, only directories.
DNo output because the loop runs zero times.
Attempts:
2 left
💡 Hint
Think about what 'ls /etc/passwd' outputs and how the for loop processes it.

Practice

(1/5)
1. What is the main benefit of using debugging in bash scripts?
easy
A. It helps find errors quickly by showing commands as they run
B. It makes the script run faster
C. It automatically fixes syntax errors
D. It hides all output to keep the terminal clean

Solution

  1. Step 1: Understand debugging purpose

    Debugging shows each command as it runs, helping spot where errors happen.
  2. Step 2: Compare options

    Only It helps find errors quickly by showing commands as they run describes this benefit; others are incorrect or unrelated.
  3. Final Answer:

    It helps find errors quickly by showing commands as they run -> Option A
  4. Quick Check:

    Debugging = Find errors fast [OK]
Hint: Debugging shows commands step-by-step to spot errors fast [OK]
Common Mistakes:
  • Thinking debugging speeds up script execution
  • Believing debugging fixes errors automatically
  • Assuming debugging hides output
2. Which command enables debugging mode in a bash script?
easy
A. bash --quiet
B. set +x
C. set -x
D. bash -c

Solution

  1. Step 1: Recall debugging syntax

    The command set -x turns on debugging to show commands as they run.
  2. Step 2: Eliminate wrong options

    set +x disables debugging; others do not enable debugging.
  3. Final Answer:

    set -x -> Option C
  4. Quick Check:

    Enable debugging = set -x [OK]
Hint: Use 'set -x' to start debugging in bash scripts [OK]
Common Mistakes:
  • Using 'set +x' which disables debugging
  • Confusing bash options like '--quiet' or '-c'
  • Not knowing debugging commands
3. What will be the output of this script with debugging enabled?
#!/bin/bash
set -x
name="Alice"
echo "Hello, $name!"
medium
A. Hello, Alice!
B. Error: variable not set
C. + echo Hello, $name! Hello, $name!
D. + name=Alice + echo 'Hello, Alice!' Hello, Alice!

Solution

  1. Step 1: Understand debugging output

    With set -x, bash prints each command with a '+' before running it.
  2. Step 2: Trace script commands

    It shows name=Alice and echo 'Hello, Alice!' before printing the greeting.
  3. Final Answer:

    + name=Alice + echo 'Hello, Alice!' Hello, Alice! -> Option D
  4. Quick Check:

    Debug output shows commands + final echo [OK]
Hint: Debug mode prints commands with '+' before output [OK]
Common Mistakes:
  • Ignoring debug lines starting with '+'
  • Expecting only final echo output
  • Misreading variable expansion in debug output
4. You run a bash script but it silently fails. Which debugging step helps find the error?
medium
A. Add set -x at the script start
B. Remove all echo statements
C. Run script with bash --quiet
D. Delete all comments

Solution

  1. Step 1: Identify debugging method

    Adding set -x shows commands as they run, revealing where it fails.
  2. Step 2: Evaluate other options

    Removing echo or comments or running quietly hides info, not helpful for debugging.
  3. Final Answer:

    Add set -x at the script start -> Option A
  4. Quick Check:

    Enable debugging with set -x [OK]
Hint: Use 'set -x' to reveal script execution steps [OK]
Common Mistakes:
  • Thinking removing echo helps debugging
  • Using quiet mode hides errors
  • Deleting comments affects debugging
5. You have a script with a loop that sometimes skips commands silently. How can debugging save hours here?
hard
A. By running the script faster without pauses
B. By showing each command run, you spot where the loop skips
C. By hiding all output except errors
D. By automatically fixing the loop logic

Solution

  1. Step 1: Understand loop debugging

    Debugging prints every command, so you see exactly which commands run or skip inside the loop.
  2. Step 2: Assess other options

    Debugging does not fix logic, hide output, or speed execution automatically.
  3. Final Answer:

    By showing each command run, you spot where the loop skips -> Option B
  4. Quick Check:

    Debugging reveals skipped commands [OK]
Hint: Debugging reveals skipped commands inside loops [OK]
Common Mistakes:
  • Expecting debugging to fix code automatically
  • Thinking debugging hides output
  • Assuming debugging speeds up script
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