]>
Commit | Line | Data |
---|---|---|
d166f048 JA |
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 | { | |
7117c2d2 | 15 | trap 'echo ${FUNCNAME:-$0}[$LINENO] funcdebug' DEBUG |
d166f048 JA |
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 | ||
7117c2d2 JA |
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 | ||
d166f048 JA |
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 | ||
28ef6c31 JA |
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 | ||
d166f048 JA |
62 | # hmmm...should this set the handling to SIG_IGN for children, too? |
63 | trap '' USR2 | |
cce855bc | 64 | ./trap1.sub |
a0c0a00f | 65 | trap - USR2 |
d166f048 | 66 | |
f73dda09 JA |
67 | # test ERR trap |
68 | ./trap2.sub | |
69 | ||
0001803f CR |
70 | ${THIS_SH} ./trap3.sub |
71 | ||
ac50fbac CR |
72 | ${THIS_SH} ./trap4.sub |
73 | ||
74 | # This doesn't work right on all Unix versions | |
75 | #${THIS_SH} ./trap5.sub | |
76 | ||
d166f048 JA |
77 | # |
78 | # show that setting a trap on SIGCHLD is not disastrous. | |
79 | # | |
80 | set -o monitor | |
81 | ||
82 | trap 'echo caught a child death' SIGCHLD | |
83 | ||
84 | sleep 7 & sleep 6 & sleep 5 & | |
85 | ||
3185942a | 86 | # this will only catch the first, since there's a trap on SIGCHLD |
d166f048 JA |
87 | wait |
88 | ||
89 | trap -p SIGCHLD | |
cce855bc JA |
90 | |
91 | # Now reset some of the signals the shell handles specially back to | |
92 | # their default values (with or without the SIG prefix) | |
b80f6443 | 93 | trap - SIGINT QUIT TERM |
cce855bc JA |
94 | |
95 | trap | |
3185942a JA |
96 | |
97 | trap - SIGCHLD | |
98 | wait |