func()
{
- trap 'echo [$LINENO] funcdebug' DEBUG
+ trap 'echo ${FUNCNAME:-$0}[$LINENO] funcdebug' DEBUG
echo funcdebug line
}
trap
+trap 'echo ${FUNCNAME:-$0}[$LINENO] debug' DEBUG
+func2()
+{
+ echo func2debug line
+}
+declare -ft func2
+func2
+
+unset -f func2
+
trap '' DEBUG
trap
trap
+# exit 0 in exit trap should set exit status
+(
+set -e
+trap 'exit 0' EXIT
+false
+echo bad
+)
+echo $?
+
# hmmm...should this set the handling to SIG_IGN for children, too?
trap '' USR2
-./trap.sub1
+./trap1.sub
+
+# test ERR trap
+./trap2.sub
+
+${THIS_SH} ./trap3.sub
+
+${THIS_SH} ./trap4.sub
+
+# This doesn't work right on all Unix versions
+#${THIS_SH} ./trap5.sub
#
# show that setting a trap on SIGCHLD is not disastrous.
sleep 7 & sleep 6 & sleep 5 &
+# this will only catch the first, since there's a trap on SIGCHLD
wait
trap -p SIGCHLD
+
+# Now reset some of the signals the shell handles specially back to
+# their default values (with or without the SIG prefix)
+trap - SIGINT QUIT TERM
+
+trap
+
+trap - SIGCHLD
+wait