Custom exit codes (exit N) in Bash Scripting - Time & Space Complexity
When using custom exit codes in bash scripts, it's important to understand how the script's running time changes as it executes commands.
We want to see how the script's steps grow when it uses exit codes to stop early or continue.
Analyze the time complexity of the following bash script using custom exit codes.
#!/bin/bash
for i in {1..n}; do
if [[ $i -eq 5 ]]; then
exit 3 # Custom exit code
fi
echo "Processing $i"
done
This script loops from 1 to n, prints each number, but exits early with code 3 when i equals 5.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop iterating from 1 to n.
- How many times: Up to 5 times because the script exits early at i=5.
Because the script stops at i=5, the number of steps does not grow with n beyond 5.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 5 (stops early) |
| 100 | 5 (stops early) |
| 1000 | 5 (stops early) |
Pattern observation: The script runs a fixed number of steps regardless of input size because of the early exit.
Time Complexity: O(1)
This means the script runs a constant number of steps no matter how big n is, due to the early exit.
[X] Wrong: "The script always runs n times because the loop goes from 1 to n."
[OK] Correct: The script stops early at i=5 using exit, so it does not complete all n iterations.
Understanding how early exits affect script runtime helps you reason about efficiency and control flow in real scripts.
What if the exit condition was changed to i equals n instead of 5? How would the time complexity change?
Practice
exit 0 mean in a bash script?Solution
Step 1: Understand exit codes in bash
In bash,exit 0means the script ended without any errors.Step 2: Interpret the meaning of 0
Exit code 0 always signals success to the system or calling program.Final Answer:
The script finished successfully without errors. -> Option CQuick Check:
exit 0 = success [OK]
- Thinking exit 0 means error
- Assuming script continues after exit
- Confusing exit 0 with restart
Solution
Step 1: Recall bash exit syntax
The correct way to exit with a code isexit N, where N is a number.Step 2: Check each option
exit 5 usesexit 5, which is valid syntax. Others are invalid in bash.Final Answer:
exit 5 -> Option AQuick Check:
exit N syntax = exit 5 [OK]
- Adding 'code' after exit
- Using parentheses like a function
- Using negative numbers for exit
#!/bin/bash if [ -f "/tmp/file.txt" ]; then exit 3 else exit 0 fi
Solution
Step 1: Understand the if condition
The script checks if the file /tmp/file.txt exists using-f.Step 2: Analyze exit codes for each case
If the file exists, it exits with code 3; otherwise, it exits with 0.Final Answer:
3 if /tmp/file.txt exists, 0 if not -> Option BQuick Check:
File exists -> exit 3; else -> exit 0 [OK]
- Mixing up the if and else branches
- Assuming exit 0 always means file exists
- Ignoring the file check condition
#!/bin/bash exit 256
Solution
Step 1: Check valid exit code range
Bash exit codes must be between 0 and 255 inclusive.Step 2: Analyze the given exit code
256 is outside this range, so it is invalid and will wrap around or cause unexpected behavior.Final Answer:
Exit code 256 is invalid; exit codes must be 0-255. -> Option AQuick Check:
Exit codes range 0-255 [OK]
- Using numbers above 255
- Thinking quotes are needed
- Confusing case sensitivity of exit
Solution
Step 1: Identify how to check root user
Root user has UID 0, so checking$UID -ne 0means user is not root.Step 2: Match exit codes to condition
If user is not root, exit 10; else exit 0 for root user.Final Answer:
if [ "$UID" -ne 0 ]; then exit 10; else exit 0; fi -> Option DQuick Check:
UID 0 means root; non-zero means not root [OK]
- Comparing USER string instead of UID
- Reversing the exit codes
- Using == instead of -eq for numbers
Ready to prove it?
Pass the test and this pattern moves unknown
