Bird
Raised Fist0
Linux CLIscripting~20 mins

Shell options (set -e, set -x) in Linux CLI - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Shell Options Master
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 with set -e?
Consider this shell script:
#!/bin/bash
set -e
echo "Start"
false
echo "End"

What will be printed when this script runs?
Linux CLI
#!/bin/bash
set -e
echo "Start"
false
echo "End"
AEnd
B
Start
End
CNo output
DStart
Attempts:
2 left
💡 Hint
Remember, set -e stops the script if a command fails.
💻 Command Output
intermediate
2:00remaining
What does set -x do in this script?
Given this script:
#!/bin/bash
set -x
VAR=5
echo $((VAR + 3))

What will be the output?
Linux CLI
#!/bin/bash
set -x
VAR=5
echo $((VAR + 3))
A8
B
+ VAR=5
+ echo 8
8
C
VAR=5
8
DNo output
Attempts:
2 left
💡 Hint
set -x shows each command before running it.
📝 Syntax
advanced
2:00remaining
Which script will stop immediately on any error?
Select the script that uses shell options correctly to stop execution immediately if any command fails.
A
#!/bin/bash
set -e
false
echo "This will not print"
B
#!/bin/bash
set -o errexit
false
echo "This will print"
C
#!/bin/bash
set -x
false
echo "This will not print"
D
#!/bin/bash
set +e
false
echo "This will not print"
Attempts:
2 left
💡 Hint
Look for the option that stops on errors.
💻 Command Output
advanced
2:00remaining
What error does this script produce without set -e?
Given this script:
#!/bin/bash
echo "Start"
ls /nonexistent_directory
echo "End"

What will be the output?
Linux CLI
#!/bin/bash
echo "Start"
ls /nonexistent_directory
echo "End"
A
Start
ls: cannot access '/nonexistent_directory': No such file or directory
End
B
Start
End
C
Start
ls: cannot access '/nonexistent_directory': No such file or directory
DNo output
Attempts:
2 left
💡 Hint
Without set -e, script continues after errors.
🚀 Application
expert
2:00remaining
How to debug a failing script with set -x and stop on error with set -e?
You have a script that sometimes fails silently. You want to see each command as it runs and stop immediately if any command fails. Which option combination should you use at the start of your script?
Aset -e -x +v
Bset +e +x
Cset -ex
Dset -x; set +e
Attempts:
2 left
💡 Hint
Combine options to both debug and stop on errors.

Practice

(1/5)
1. What does the shell option set -e do in a script?
easy
A. Stops the script immediately if any command returns an error
B. Prints each command before executing it
C. Ignores all errors and continues running
D. Runs the script in the background

Solution

  1. Step 1: Understand the purpose of set -e

    This option makes the shell stop running the script if any command fails (returns a non-zero exit code).
  2. Step 2: Compare with other options

    set -x prints commands, but set -e stops on errors, so stopping on error is correct.
  3. Final Answer:

    Stops the script immediately if any command returns an error -> Option A
  4. Quick Check:

    set -e stops on error [OK]
Hint: Remember: 'e' for error stop [OK]
Common Mistakes:
  • Confusing set -e with set -x
  • Thinking it ignores errors
  • Assuming it runs commands silently
2. Which of the following is the correct way to enable both set -e and set -x in a shell script?
easy
A. set -x e
B. set -xe
C. set e -x
D. set -e x

Solution

  1. Step 1: Understand combined options syntax

    Shell options can be combined after a single dash, order does not matter, so set -xe works.
  2. Step 2: Check options with spaces

    set e -x is invalid syntax, and set -x e or set -e x set only one option.
  3. Final Answer:

    set -xe -> Option B
  4. Quick Check:

    Combine options after one dash [OK]
Hint: Combine flags after one dash, order doesn't matter [OK]
Common Mistakes:
  • Using spaces between flags incorrectly
  • Writing flags without dashes
  • Assuming order matters
3. Given this script snippet with set -e enabled:
set -e
mkdir /tmp/mydir
cd /tmp/mydir
false
echo "This will not print"
What will be the output when running this script?
medium
A. Fails at mkdir and stops immediately
B. Creates directory, changes directory, prints 'This will not print'
C. Creates directory, changes directory, then stops at false; no echo output
D. Runs all commands including echo

Solution

  1. Step 1: Trace commands with set -e

    The script creates /tmp/mydir, changes into it, then runs false which returns error (non-zero).
  2. Step 2: Effect of set -e on error

    Because set -e stops on any error, the script stops after false and does not run the echo command.
  3. Final Answer:

    Creates directory, changes directory, then stops at false; no echo output -> Option C
  4. Quick Check:

    set -e stops script on error [OK]
Hint: Remember: script stops at first error with set -e [OK]
Common Mistakes:
  • Assuming echo runs after error
  • Thinking mkdir fails by default
  • Ignoring effect of set -e
4. You have this script:
#!/bin/bash
set -x
ls /nonexistent
pwd
What is the problem and how to fix it so the script continues after the error?
medium
A. No problem; script runs all commands
B. Problem: script stops on error; fix by removing set -x
C. Problem: script prints commands; fix by removing set -x
D. Problem: script stops on error; fix by removing set -e (not set here)

Solution

  1. Step 1: Analyze script options

    The script uses set -x which prints commands but does not stop on errors. There is no set -e so script continues despite ls error and runs pwd.
  2. Step 2: Identify problem and fix

    Script already continues after error since no set -e. No problem exists.
  3. Final Answer:

    No problem; script runs all commands -> Option A
  4. Quick Check:

    set -x prints commands, set -e stops on error [OK]
Hint: Remember: set -x prints, set -e stops [OK]
Common Mistakes:
  • Confusing set -x with set -e
  • Assuming set -x stops script
  • Ignoring missing set -e
5. You want to debug a script that sometimes fails silently. Which combination of shell options helps you see each command as it runs and stops immediately on errors?
hard
A. set -e only
B. set -x e
C. set -x only
D. set -ex

Solution

  1. Step 1: Understand debugging needs

    To debug, you want to see commands as they run (set -x) and stop on errors (set -e).
  2. Step 2: Combine options correctly

    set -ex enables both correctly.
  3. Final Answer:

    set -ex -> Option D
  4. Quick Check:

    Show commands and stop on error = set -ex [OK]
Hint: Use both -e and -x together to debug safely [OK]
Common Mistakes:
  • Using only one option and missing the other
  • Thinking order matters strictly
  • Confusing which option stops or prints
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