Bird
Raised Fist0
Bash Scriptingscripting~5 mins

trap for cleanup on exit in Bash Scripting - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: trap for cleanup on exit
O(n)
Understanding Time Complexity

When using trap in bash to clean up on exit, it is important to understand how the script's running time changes as input grows.

We want to see how the cleanup action affects the total work done by the script.

Scenario Under Consideration

Analyze the time complexity of the following bash script using trap for cleanup.

#!/bin/bash

trap 'echo "Cleaning up..."; rm -f temp_file.txt' EXIT

for i in $(seq 1 $1); do
  echo "Line $i" >> temp_file.txt
  sleep 0.01
 done

This script writes lines to a temporary file in a loop and uses trap to delete the file when the script exits.

Identify Repeating Operations

Look at what repeats as input size changes.

  • Primary operation: The for loop writing lines to the file.
  • How many times: Exactly n times, where n is the input argument.
  • Cleanup operation: The trap runs once on exit, deleting the file.
How Execution Grows With Input

As the input number n grows, the loop runs more times, but the cleanup runs only once.

Input Size (n)Approx. Operations
1010 writes + 1 cleanup
100100 writes + 1 cleanup
10001000 writes + 1 cleanup

Pattern observation: The main work grows with n, but cleanup cost stays the same.

Final Time Complexity

Time Complexity: O(n)

This means the script's running time grows linearly with the number of lines written, while cleanup cost is constant.

Common Mistake

[X] Wrong: "The cleanup inside trap runs every loop iteration, so it adds to the loop's time."

[OK] Correct: The trap command runs only once when the script exits, not during the loop, so it does not multiply with input size.

Interview Connect

Understanding how cleanup commands run helps you write scripts that manage resources well without slowing down your main work.

Self-Check

What if the cleanup command inside trap also looped over n items? How would the time complexity change?

Practice

(1/5)
1. What is the main purpose of using trap in a bash script?
easy
A. To define functions inside the script
B. To create loops that repeat commands
C. To run specific commands when the script exits or receives signals
D. To declare variables with default values

Solution

  1. Step 1: Understand the role of trap

    The trap command is designed to catch signals or script exit events and run commands in response.
  2. Step 2: Compare options with trap's purpose

    Options B, C, and D describe other bash features unrelated to trap. Only To run specific commands when the script exits or receives signals correctly describes its purpose.
  3. Final Answer:

    To run specific commands when the script exits or receives signals -> Option C
  4. Quick Check:

    trap runs commands on exit/signals = A [OK]
Hint: Trap runs cleanup commands on exit or signals [OK]
Common Mistakes:
  • Confusing trap with loops or functions
  • Thinking trap declares variables
  • Assuming trap runs commands continuously
2. Which of the following is the correct syntax to run cleanup function on script exit using trap?
easy
A. trap EXIT cleanup
B. trap 'cleanup' on EXIT
C. trap cleanup on EXIT
D. trap 'cleanup' EXIT

Solution

  1. Step 1: Recall trap syntax for commands

    The command(s) to run must be quoted as a string, followed by the signal or event name.
  2. Step 2: Check each option's syntax

    trap 'cleanup' EXIT correctly quotes the command and uses the signal EXIT. trap EXIT cleanup places the signal before the command (wrong order). Options C and D use incorrect keywords like 'on'.
  3. Final Answer:

    trap 'cleanup' EXIT -> Option D
  4. Quick Check:

    trap 'command' SIGNAL = B [OK]
Hint: Always quote commands in trap before the signal [OK]
Common Mistakes:
  • Omitting quotes around commands
  • Using 'on' keyword incorrectly
  • Placing signal before command
3. What will be the output of this script?
#!/bin/bash
cleanup() {
  echo "Cleaning up temp files"
}
trap 'cleanup' EXIT

echo "Script is running"
medium
A. Script is running
B. Script is running\nCleaning up temp files
C. No output
D. Cleaning up temp files

Solution

  1. Step 1: Understand script flow

    The script prints "Script is running" first, then exits.
  2. Step 2: Effect of trap on EXIT

    On exit, the cleanup function runs, printing "Cleaning up temp files" after the first echo.
  3. Final Answer:

    Script is running\nCleaning up temp files -> Option B
  4. Quick Check:

    trap runs cleanup on exit, so both lines print [OK]
Hint: trap runs cleanup after script finishes [OK]
Common Mistakes:
  • Thinking trap runs before script output
  • Expecting only cleanup message
  • Ignoring trap on EXIT
4. Identify the error in this script snippet that uses trap for cleanup:
#!/bin/bash
trap cleanup EXIT

cleanup() {
  echo "Cleaning up"
}
medium
A. No error, script is correct
B. EXIT signal is invalid
C. trap command missing quotes around cleanup
D. cleanup function is defined after trap command

Solution

  1. Step 1: Check trap command syntax

    For simple function names like cleanup, quotes are not required around the command in trap.
  2. Step 2: Analyze script order and signals

    Defining cleanup after trap is allowed because bash processes function definitions before executing traps. EXIT is valid. No syntax errors present.
  3. Final Answer:

    No error, script is correct -> Option A
  4. Quick Check:

    unquoted function name OK, post-definition OK [OK]
Hint: trap accepts unquoted simple function names [OK]
Common Mistakes:
  • Thinking functions must be defined before trap
  • Believing EXIT is an invalid signal
  • Assuming quotes are required around simple commands
5. You want to ensure a temporary file /tmp/mytempfile is deleted when your bash script exits, even if interrupted. Which trap command correctly achieves this?
hard
A. trap 'rm -f /tmp/mytempfile' EXIT INT TERM
B. trap rm -f /tmp/mytempfile EXIT INT TERM
C. trap 'rm -f /tmp/mytempfile' ONEXIT
D. trap 'rm -f /tmp/mytempfile' EXIT SIGNAL

Solution

  1. Step 1: Understand trap for multiple signals

    To catch script exit and interruptions, use signals EXIT, INT, and TERM together.
  2. Step 2: Check syntax correctness

    Commands must be quoted. trap 'rm -f /tmp/mytempfile' EXIT INT TERM quotes the command and lists valid signals. Options B misses quotes, C uses invalid signal ONEXIT, D uses invalid SIGNAL keyword.
  3. Final Answer:

    trap 'rm -f /tmp/mytempfile' EXIT INT TERM -> Option A
  4. Quick Check:

    trap 'command' SIGNALS with quotes = A [OK]
Hint: Quote commands and list all signals to catch [OK]
Common Mistakes:
  • Missing quotes around commands
  • Using invalid signal names
  • Not including INT and TERM for interrupts
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