subshell exit trap -- 'echo exiting' EXIT trap -- 'echo aborting' SIGHUP trap -- 'echo aborting' SIGINT trap -- 'echo aborting' SIGQUIT trap -- 'echo aborting' SIGABRT trap -- 'echo aborting' SIGTERM [20] debug debug line [22] debug trap -- 'echo exiting' EXIT trap -- 'echo aborting' SIGHUP trap -- 'echo aborting' SIGINT trap -- 'echo aborting' SIGQUIT trap -- 'echo aborting' SIGABRT trap -- 'echo aborting' SIGTERM trap -- 'echo [$LINENO] debug' DEBUG [24] debug func[16] funcdebug funcdebug line [26] debug trap -- 'echo exiting' EXIT trap -- 'echo aborting' SIGHUP trap -- 'echo aborting' SIGINT trap -- 'echo aborting' SIGQUIT trap -- 'echo aborting' SIGABRT trap -- 'echo aborting' SIGTERM trap -- 'echo [$LINENO] debug' DEBUG [28] debug ./trap.tests[33] debug ./trap.tests[34] debug func2[30] debug func2[31] debug func2debug line ./trap.tests[36] debug ./trap.tests[38] debug trap -- 'echo exiting' EXIT trap -- 'echo aborting' SIGHUP trap -- 'echo aborting' SIGINT trap -- 'echo aborting' SIGQUIT trap -- 'echo aborting' SIGABRT trap -- 'echo aborting' SIGTERM trap -- '' DEBUG trap -- 'echo exiting' EXIT trap -- 'echo aborting' SIGHUP trap -- 'echo aborting' SIGINT trap -- 'echo aborting' SIGQUIT trap -- 'echo aborting' SIGABRT trap -- 'echo aborting' SIGTERM trap -- 'echo exiting' EXIT trap -- '' SIGINT trap -- 'echo aborting' SIGQUIT trap -- 'echo aborting' SIGABRT trap -- 'echo aborting' SIGTERM 0 ERRTRAP ERRTRAP ERRTRAP after falses if negation ok after negation after while before false in trap2a.sub after false in trap2a.sub command substitution caught a child death caught a child death caught a child death trap -- 'echo caught a child death' SIGCHLD trap -- 'echo exiting' EXIT trap -- 'echo aborting' SIGABRT trap -- 'echo caught a child death' SIGCHLD trap -- '' SIGUSR2 exiting