Bird
Raised Fist0
Bash Scriptingscripting~10 mins

Custom exit codes (exit N) in Bash Scripting - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Custom exit codes (exit N)
Start Script
↓
Run commands
↓
Call exit N
↓
Script stops
↓
Return exit code N to OS
The script runs commands, then stops immediately when exit N is called, returning N as the exit code to the operating system.
Execution Sample
Bash Scripting
echo "Hello"
exit 3
echo "Bye"
Prints 'Hello', then exits with code 3, so 'Bye' is never printed.
Execution Table
StepCommandActionOutputExit CodeNext Step
1echo "Hello"Print messageHello0Continue
2exit 3Exit script with code 33Stop
3echo "Bye"Skipped because script exitedNo
💡 Script stops at step 2 due to exit 3, so step 3 is not executed.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
Exit CodeN/A033
Key Moments - 2 Insights
Why does the script stop after 'exit 3' and not print 'Bye'?
Because 'exit 3' immediately stops the script and returns code 3, so commands after it are not run (see execution_table step 2 and 3).
What does the number after 'exit' mean?
It is the exit code returned to the operating system, showing success (0) or error (non-zero). Here, '3' is a custom code (see variable_tracker).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the exit code after step 1?
A0
B3
C1
DNone
💡 Hint
Check the 'Exit Code' column at step 1 in the execution_table.
At which step does the script stop running commands?
AStep 1
BStep 2
CStep 3
DIt never stops
💡 Hint
Look at the 'Next Step' column in execution_table where it says 'Stop'.
If we change 'exit 3' to 'exit 0', what changes in the exit code?
AExit code becomes 1
BExit code becomes 3
CExit code becomes 0
DNo exit code
💡 Hint
Refer to variable_tracker and understand exit code meaning.
Concept Snapshot
Use 'exit N' in bash to stop a script and return a custom exit code N.
Exit code 0 means success; non-zero means error or special status.
Commands after 'exit' do not run.
Useful for signaling script result to other programs or scripts.
Full Transcript
This example shows a bash script that prints 'Hello', then uses 'exit 3' to stop immediately with exit code 3. The command after exit is skipped. The exit code is a number returned to the operating system to indicate success or failure. Zero means success, any other number is a custom error or status code. This helps other scripts or programs know what happened. The execution table traces each step, showing output and exit code changes. The variable tracker shows how the exit code changes from start to finish. Key moments clarify why the script stops and what the exit code means. The quiz tests understanding of exit codes and script flow.

Practice

(1/5)
1. What does the command exit 0 mean in a bash script?
easy
A. The script will continue running after this command.
B. The script encountered an error and stopped.
C. The script finished successfully without errors.
D. The script restarts from the beginning.

Solution

  1. Step 1: Understand exit codes in bash

    In bash, exit 0 means the script ended without any errors.
  2. Step 2: Interpret the meaning of 0

    Exit code 0 always signals success to the system or calling program.
  3. Final Answer:

    The script finished successfully without errors. -> Option C
  4. Quick Check:

    exit 0 = success [OK]
Hint: Remember: 0 means success, anything else means error [OK]
Common Mistakes:
  • Thinking exit 0 means error
  • Assuming script continues after exit
  • Confusing exit 0 with restart
2. Which of the following is the correct syntax to exit a bash script with code 5?
easy
A. exit 5
B. exit code 5
C. exit(5)
D. exit -5

Solution

  1. Step 1: Recall bash exit syntax

    The correct way to exit with a code is exit N, where N is a number.
  2. Step 2: Check each option

    exit 5 uses exit 5, which is valid syntax. Others are invalid in bash.
  3. Final Answer:

    exit 5 -> Option A
  4. Quick Check:

    exit N syntax = exit 5 [OK]
Hint: Use just 'exit' followed by a number, no extra words [OK]
Common Mistakes:
  • Adding 'code' after exit
  • Using parentheses like a function
  • Using negative numbers for exit
3. What will be the exit code of this script?
#!/bin/bash
if [ -f "/tmp/file.txt" ]; then
  exit 3
else
  exit 0
fi
medium
A. 0 if /tmp/file.txt exists, 3 if not
B. 3 if /tmp/file.txt exists, 0 if not
C. Always 0
D. Always 3

Solution

  1. Step 1: Understand the if condition

    The script checks if the file /tmp/file.txt exists using -f.
  2. Step 2: Analyze exit codes for each case

    If the file exists, it exits with code 3; otherwise, it exits with 0.
  3. Final Answer:

    3 if /tmp/file.txt exists, 0 if not -> Option B
  4. Quick Check:

    File exists -> exit 3; else -> exit 0 [OK]
Hint: Match exit code to condition true/false carefully [OK]
Common Mistakes:
  • Mixing up the if and else branches
  • Assuming exit 0 always means file exists
  • Ignoring the file check condition
4. Identify the error in this script snippet:
#!/bin/bash
exit 256
medium
A. Exit code 256 is invalid; exit codes must be 0-255.
B. Missing quotes around 256.
C. exit command should be lowercase.
D. exit requires a string, not a number.

Solution

  1. Step 1: Check valid exit code range

    Bash exit codes must be between 0 and 255 inclusive.
  2. Step 2: Analyze the given exit code

    256 is outside this range, so it is invalid and will wrap around or cause unexpected behavior.
  3. Final Answer:

    Exit code 256 is invalid; exit codes must be 0-255. -> Option A
  4. Quick Check:

    Exit codes range 0-255 [OK]
Hint: Exit codes must be 0-255, no higher numbers [OK]
Common Mistakes:
  • Using numbers above 255
  • Thinking quotes are needed
  • Confusing case sensitivity of exit
5. You want a script to exit with code 10 if a user is not root, and 0 if root. Which snippet correctly implements this?
hard
A. if [ "$USER" != "root" ]; then exit 10; else exit 0; fi
B. if [ "$UID" -eq 0 ]; then exit 10; else exit 0; fi
C. if [ "$USER" == "root" ]; then exit 10; else exit 0; fi
D. if [ "$UID" -ne 0 ]; then exit 10; else exit 0; fi

Solution

  1. Step 1: Identify how to check root user

    Root user has UID 0, so checking $UID -ne 0 means user is not root.
  2. Step 2: Match exit codes to condition

    If user is not root, exit 10; else exit 0 for root user.
  3. Final Answer:

    if [ "$UID" -ne 0 ]; then exit 10; else exit 0; fi -> Option D
  4. Quick Check:

    UID 0 means root; non-zero means not root [OK]
Hint: Use UID 0 to check root, not USER string [OK]
Common Mistakes:
  • Comparing USER string instead of UID
  • Reversing the exit codes
  • Using == instead of -eq for numbers
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