Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

trapping shell exit code

I am working on a shell script, and want to handle various exit codes that I might come across. To try things out, I am using this script:

#!/bin/sh
echo "Starting"
trap "echo \"first one\"; echo \"second one\"; " 1
exit 1;

I suppose I am missing something, but it seems I can't trap my own "exit 1". If I try to trap 0 everything works out:

#!/bin/sh
echo "Starting"
trap "echo \"first one\"; echo \"second one\"; " 0
exit

Is there anything I should know about trapping HUP (1) exit code?

like image 600
jpou Avatar asked Apr 25 '26 08:04

jpou


2 Answers

trap dispatches on signals the process receives (e.g., from a kill), not on exit codes, with trap ... 0 being reserved for process ending. trap /blah/blah 0 will dispatch on either exit 0 or exit 1

like image 197
Charles Stewart Avatar answered Apr 28 '26 03:04

Charles Stewart


That's just an exit code, it doesn't mean HUP. So your trap ... 1 is looking for HUP, but the exit is just an exit.

In addition to the system signals which you can list by doing trap -l, you can use some special Bash sigspecs: ERR, EXIT, RETURN and DEBUG. In all cases, you should use the name of the signal rather than the number for readability.

like image 29
Dennis Williamson Avatar answered Apr 28 '26 02:04

Dennis Williamson