| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  | a() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	x=$((x - 1)) | 
					
						
							|  |  |  | 	return 5 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	x=$((x - 1)) | 
					
						
							|  |  |  | 	a | 
					
						
							|  |  |  | 	echo a returns $? | 
					
						
							|  |  |  | 	return 4 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	x=$((x - 1)) | 
					
						
							|  |  |  | 	b | 
					
						
							|  |  |  | 	echo b returns $? | 
					
						
							|  |  |  | 	return 3 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	x=$((x - 1)) | 
					
						
							|  |  |  | 	c | 
					
						
							|  |  |  | 	echo c returns $? | 
					
						
							|  |  |  | 	return 2 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	d | 
					
						
							|  |  |  | 	echo d returns $? | 
					
						
							|  |  |  | 	echo in e | 
					
						
							|  |  |  | 	x=$((x - 1)) | 
					
						
							|  |  |  | 	return $x | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	e | 
					
						
							|  |  |  | 	echo e returned $? | 
					
						
							|  |  |  | 	echo x is $x | 
					
						
							|  |  |  | 	return 0 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | x=30 | 
					
						
							|  |  |  | f | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # make sure unsetting a local variable preserves the `local' attribute | 
					
						
							|  |  |  | f1() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	local zz | 
					
						
							|  |  |  | 	zz=abcde | 
					
						
							|  |  |  | 	echo $zz | 
					
						
							|  |  |  | 	unset zz | 
					
						
							|  |  |  | 	zz=defghi | 
					
						
							|  |  |  | 	echo $zz | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | zz=ZZ | 
					
						
							|  |  |  | echo $zz | 
					
						
							|  |  |  | f1 | 
					
						
							|  |  |  | echo $zz | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | unset -f f1 | 
					
						
							|  |  |  | f1() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return 5 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ( f1 ) | 
					
						
							|  |  |  | echo $? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | unset -f f1 | 
					
						
							|  |  |  | f1() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	sleep 5 | 
					
						
							|  |  |  | 	return 5 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f1 & | 
					
						
							|  |  |  | wait | 
					
						
							|  |  |  | echo $? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | unset -f f1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f1() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	echo $AVAR | 
					
						
							|  |  |  | 	printenv AVAR | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | AVAR=AVAR | 
					
						
							|  |  |  | echo $AVAR | 
					
						
							|  |  |  | f1 | 
					
						
							|  |  |  | AVAR=foo f1 | 
					
						
							|  |  |  | echo $AVAR | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | unset -f f1 | 
					
						
							|  |  |  | # make sure subshells can do a `return' if we're executing in a function | 
					
						
							|  |  |  | f1() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	( return 5 ) | 
					
						
							|  |  |  | 	status=$? | 
					
						
							|  |  |  | 	echo $status | 
					
						
							|  |  |  | 	return $status | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f1 | 
					
						
							|  |  |  | echo $? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | declare -F f1	# should print just the name | 
					
						
							|  |  |  | declare -f f1	# should print the definition, too | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # no functions should be exported, right? | 
					
						
							|  |  |  | declare -xF | 
					
						
							|  |  |  | declare -xf | 
					
						
							| 
									
										
										
										
											2000-03-17 21:46:59 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # FUNCNAME tests | 
					
						
							|  |  |  | func2() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	echo FUNCNAME = $FUNCNAME | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	echo before: FUNCNAME = $FUNCNAME | 
					
						
							|  |  |  | 	func2 | 
					
						
							|  |  |  | 	echo after: FUNCNAME = $FUNCNAME | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo before: try to assign to FUNCNAME | 
					
						
							|  |  |  | FUCNAME=7 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo outside: FUNCNAME = $FUNCNAME | 
					
						
							|  |  |  | func | 
					
						
							|  |  |  | echo outside2: FUNCNAME = $FUNCNAME | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # test exported functions (and cached exportstr) | 
					
						
							|  |  |  | zf() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	echo this is zf | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | export -f zf | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ${THIS_SH} -c 'type -t zf' | 
					
						
							|  |  |  | ${THIS_SH} -c 'type zf' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ${THIS_SH} ./func1.sub | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-04-06 19:14:31 +00:00
										 |  |  | # tests for functions whose bodies are not group commands, with and without | 
					
						
							|  |  |  | # attached redirections | 
					
						
							|  |  |  | ${THIS_SH} ./func2.sub | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # test for some posix-specific function behavior | 
					
						
							|  |  |  | ${THIS_SH} ./func3.sub | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-03-17 21:46:59 +00:00
										 |  |  | exit 0 |