Bird
Raised Fist0
Bash Scriptingscripting~10 mins

trap for cleanup on exit in Bash Scripting - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to run the cleanup function when the script exits.

Bash Scripting
trap [1] EXIT

cleanup() {
  echo "Cleaning up..."
}

cleanup
Drag options to blanks, or click blank then click option'
Asignal
Bexit
Ctrap
Dcleanup
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'exit' instead of the function name in trap.
Adding parentheses after the function name in trap.
Using 'signal' which is not a command here.
2fill in blank
medium

Complete the code to trap both EXIT and INT signals to run cleanup.

Bash Scripting
trap [1] EXIT INT

cleanup() {
  echo "Cleaning up resources..."
}

cleanup
Drag options to blanks, or click blank then click option'
AINT
Bcleanup()
Ccleanup
Dexit
Attempts:
3 left
💡 Hint
Common Mistakes
Including parentheses after the function name in trap.
Using signal names as the command to run.
Forgetting to list all signals after the command.
3fill in blank
hard

Fix the error in the trap command to correctly call cleanup on script exit.

Bash Scripting
trap [1] EXIT

cleanup() {
  echo "Done cleaning."
}

cleanup
Drag options to blanks, or click blank then click option'
Acleanup()
Bcleanup
C"cleanup"
D'cleanup()'
Attempts:
3 left
💡 Hint
Common Mistakes
Adding parentheses after the function name in trap.
Using quotes around the function name.
Using the wrong command name.
4fill in blank
hard

Fill both blanks to create a trap that runs cleanup on EXIT and TERM signals.

Bash Scripting
trap [1] [2]

cleanup() {
  echo "Cleanup done."
}

cleanup
Drag options to blanks, or click blank then click option'
Acleanup
BEXIT
CTERM
DB C
Attempts:
3 left
💡 Hint
Common Mistakes
Putting signals before the command.
Using wrong signal names.
Adding parentheses to the function name.
5fill in blank
hard

Fill all three blanks to trap cleanup on EXIT and INT signals and define the cleanup function.

Bash Scripting
trap [1] [2]

[3]() {
  echo "Exiting and cleaning up."
}

cleanup
Drag options to blanks, or click blank then click option'
Acleanup
BEXIT INT
Dexit
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'exit' instead of 'cleanup' as the function name.
Not listing both signals.
Adding parentheses to the function name.

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