69 lines
		
	
	
	
		
			763 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			763 B
		
	
	
	
		
			Text
		
	
	
	
	
	
# weird redirections that caused trouble and were fixed in post-3.0 bash
 | 
						|
stuff()
 | 
						|
{
 | 
						|
	c=1
 | 
						|
	( sleep 5 < /dev/null >/dev/null 2>&1 & ) &
 | 
						|
}
 | 
						|
 | 
						|
exec 3>&1
 | 
						|
eval `
 | 
						|
exec 4>&1 >&3 3>&-
 | 
						|
{
 | 
						|
	stuff 4>&-
 | 
						|
	echo "c=$c" >&4
 | 
						|
}`
 | 
						|
echo c1 is $c
 | 
						|
 | 
						|
unset -f stuff
 | 
						|
 | 
						|
stuff()
 | 
						|
{
 | 
						|
	c=2
 | 
						|
	( sleep 5 < /dev/null >/dev/null 2>&1 & )
 | 
						|
}
 | 
						|
 | 
						|
exec 3>&1
 | 
						|
eval `
 | 
						|
exec 4>&1 >&3 3>&-
 | 
						|
{
 | 
						|
	stuff 4>&-
 | 
						|
	echo "c=$c" >&4
 | 
						|
}`
 | 
						|
echo c2 is $c
 | 
						|
 | 
						|
unset -f stuff
 | 
						|
 | 
						|
stuff()
 | 
						|
{
 | 
						|
	c=3
 | 
						|
	{ sleep 5 < /dev/null >/dev/null 2>&1 & } &
 | 
						|
}
 | 
						|
 | 
						|
exec 3>&1
 | 
						|
eval `
 | 
						|
exec 4>&1 >&3 3>&-
 | 
						|
{
 | 
						|
	stuff 4>&-
 | 
						|
	echo "c=$c" >&4
 | 
						|
}`
 | 
						|
echo c3 is $c
 | 
						|
 | 
						|
unset -f stuff
 | 
						|
 | 
						|
stuff()
 | 
						|
{
 | 
						|
	c=4
 | 
						|
	{ sleep 5 < /dev/null >/dev/null 2>&1 & }
 | 
						|
}
 | 
						|
 | 
						|
exec 3>&1
 | 
						|
eval `
 | 
						|
exec 4>&1 >&3 3>&-
 | 
						|
{
 | 
						|
	stuff 4>&-
 | 
						|
	echo "c=$c" >&4
 | 
						|
}`
 | 
						|
echo c4 is $c
 | 
						|
 | 
						|
# fixed in bash-3.1
 | 
						|
echo 'exec <&3' | ${THIS_SH} 3<&0
 |