Bash-4.2 distribution sources and documentation
[platform/upstream/bash.git] / tests / trap.tests
1 # test the trap code
2
3 trap 'echo exiting' 0
4 trap 'echo aborting' 1 2 3 6 15
5
6 # make sure a user-specified subshell runs the exit trap, but does not
7 # inherit the exit trap from a parent shell
8 ( trap 'echo subshell exit' 0; exit 0 )
9 ( exit 0 )
10
11 trap
12
13 func()
14 {
15         trap 'echo ${FUNCNAME:-$0}[$LINENO] funcdebug' DEBUG
16         echo funcdebug line
17 }
18
19 trap 'echo [$LINENO] debug' DEBUG
20 echo debug line
21
22 trap
23
24 func
25
26 trap
27
28 trap 'echo ${FUNCNAME:-$0}[$LINENO] debug' DEBUG
29 func2()
30 {
31         echo func2debug line
32 }
33 declare -ft func2
34 func2
35
36 unset -f func2
37
38 trap '' DEBUG
39
40 trap
41
42 trap - debug
43
44 trap
45
46 trap - HUP
47 trap hup
48 trap '' INT
49 trap '' int
50
51 trap
52
53 # exit 0 in exit trap should set exit status
54 (
55 set -e
56 trap 'exit 0' EXIT
57 false   
58 echo bad
59 )
60 echo $?
61
62 # hmmm...should this set the handling to SIG_IGN for children, too?
63 trap '' USR2
64 ./trap1.sub
65
66 # test ERR trap
67 ./trap2.sub
68
69 ${THIS_SH} ./trap3.sub
70
71 #
72 # show that setting a trap on SIGCHLD is not disastrous.
73 #
74 set -o monitor
75
76 trap 'echo caught a child death' SIGCHLD
77
78 sleep 7 & sleep 6 & sleep 5 &
79
80 # this will only catch the first, since there's a trap on SIGCHLD
81 wait
82
83 trap -p SIGCHLD
84
85 # Now reset some of the signals the shell handles specially back to
86 # their default values (with or without the SIG prefix)
87 trap - SIGINT QUIT TERM
88
89 trap
90
91 trap - SIGCHLD
92 wait