| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  | # test the trap code | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap 'echo exiting' 0 | 
					
						
							|  |  |  | trap 'echo aborting' 1 2 3 6 15 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # make sure a user-specified subshell runs the exit trap, but does not | 
					
						
							|  |  |  | # inherit the exit trap from a parent shell | 
					
						
							|  |  |  | ( trap 'echo subshell exit' 0; exit 0 ) | 
					
						
							|  |  |  | ( exit 0 ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2002-07-17 14:10:11 +00:00
										 |  |  | 	trap 'echo ${FUNCNAME:-$0}[$LINENO] funcdebug' DEBUG | 
					
						
							| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  | 	echo funcdebug line | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap 'echo [$LINENO] debug' DEBUG | 
					
						
							|  |  |  | echo debug line | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-07-17 14:10:11 +00:00
										 |  |  | trap 'echo ${FUNCNAME:-$0}[$LINENO] debug' DEBUG | 
					
						
							|  |  |  | func2() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	echo func2debug line | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | declare -ft func2 | 
					
						
							|  |  |  | func2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | unset -f func2 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  | trap '' DEBUG | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap - debug | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap - HUP | 
					
						
							|  |  |  | trap hup | 
					
						
							|  |  |  | trap '' INT | 
					
						
							|  |  |  | trap '' int | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-04-06 19:14:31 +00:00
										 |  |  | # exit 0 in exit trap should set exit status | 
					
						
							|  |  |  | ( | 
					
						
							|  |  |  | set -e | 
					
						
							|  |  |  | trap 'exit 0' EXIT | 
					
						
							|  |  |  | false    | 
					
						
							|  |  |  | echo bad | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | echo $? | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  | # hmmm...should this set the handling to SIG_IGN for children, too? | 
					
						
							|  |  |  | trap '' USR2 | 
					
						
							| 
									
										
										
										
											1998-04-17 19:52:44 +00:00
										 |  |  | ./trap1.sub | 
					
						
							| 
									
										
										
										
											2016-09-15 16:59:08 -04:00
										 |  |  | trap - USR2 | 
					
						
							| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-11-13 17:56:06 +00:00
										 |  |  | # test ERR trap | 
					
						
							|  |  |  | ./trap2.sub | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-21 20:51:19 -05:00
										 |  |  | ${THIS_SH} ./trap3.sub | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-26 09:36:43 -05:00
										 |  |  | ${THIS_SH} ./trap4.sub | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # This doesn't work right on all Unix versions | 
					
						
							|  |  |  | #${THIS_SH} ./trap5.sub | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  | # | 
					
						
							|  |  |  | # show that setting a trap on SIGCHLD is not disastrous. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | set -o monitor | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap 'echo caught a child death' SIGCHLD | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | sleep 7 & sleep 6 & sleep 5 & | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-12 13:36:28 +00:00
										 |  |  | # this will only catch the first, since there's a trap on SIGCHLD | 
					
						
							| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  | wait | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap -p SIGCHLD | 
					
						
							| 
									
										
										
										
											1998-04-17 19:52:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Now reset some of the signals the shell handles specially back to | 
					
						
							|  |  |  | # their default values (with or without the SIG prefix) | 
					
						
							| 
									
										
										
										
											2004-07-27 13:29:18 +00:00
										 |  |  | trap - SIGINT QUIT TERM | 
					
						
							| 
									
										
										
										
											1998-04-17 19:52:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | trap | 
					
						
							| 
									
										
										
										
											2009-01-12 13:36:28 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | trap - SIGCHLD | 
					
						
							|  |  |  | wait |