]> git.ipfire.org Git - thirdparty/bash.git/blame - tests/trap.tests
Bash-4.3 patch 7
[thirdparty/bash.git] / tests / trap.tests
CommitLineData
d166f048
JA
1# test the trap code
2
3trap 'echo exiting' 0
4trap '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
11trap
12
13func()
14{
7117c2d2 15 trap 'echo ${FUNCNAME:-$0}[$LINENO] funcdebug' DEBUG
d166f048
JA
16 echo funcdebug line
17}
18
19trap 'echo [$LINENO] debug' DEBUG
20echo debug line
21
22trap
23
24func
25
26trap
27
7117c2d2
JA
28trap 'echo ${FUNCNAME:-$0}[$LINENO] debug' DEBUG
29func2()
30{
31 echo func2debug line
32}
33declare -ft func2
34func2
35
36unset -f func2
37
d166f048
JA
38trap '' DEBUG
39
40trap
41
42trap - debug
43
44trap
45
46trap - HUP
47trap hup
48trap '' INT
49trap '' int
50
51trap
52
28ef6c31
JA
53# exit 0 in exit trap should set exit status
54(
55set -e
56trap 'exit 0' EXIT
57false
58echo bad
59)
60echo $?
61
d166f048
JA
62# hmmm...should this set the handling to SIG_IGN for children, too?
63trap '' USR2
cce855bc 64./trap1.sub
d166f048 65
f73dda09
JA
66# test ERR trap
67./trap2.sub
68
0001803f
CR
69${THIS_SH} ./trap3.sub
70
ac50fbac
CR
71${THIS_SH} ./trap4.sub
72
73# This doesn't work right on all Unix versions
74#${THIS_SH} ./trap5.sub
75
d166f048
JA
76#
77# show that setting a trap on SIGCHLD is not disastrous.
78#
79set -o monitor
80
81trap 'echo caught a child death' SIGCHLD
82
83sleep 7 & sleep 6 & sleep 5 &
84
3185942a 85# this will only catch the first, since there's a trap on SIGCHLD
d166f048
JA
86wait
87
88trap -p SIGCHLD
cce855bc
JA
89
90# Now reset some of the signals the shell handles specially back to
91# their default values (with or without the SIG prefix)
b80f6443 92trap - SIGINT QUIT TERM
cce855bc
JA
93
94trap
3185942a
JA
95
96trap - SIGCHLD
97wait