1# weird redirections that caused trouble and were fixed in post-3.0 bash 2stuff() 3{ 4 c=1 5 ( sleep 5 < /dev/null >/dev/null 2>&1 & ) & 6} 7 8exec 3>&1 9eval ` 10exec 4>&1 >&3 3>&- 11{ 12 stuff 4>&- 13 echo "c=$c" >&4 14}` 15echo c1 is $c 16 17unset -f stuff 18 19stuff() 20{ 21 c=2 22 ( sleep 5 < /dev/null >/dev/null 2>&1 & ) 23} 24 25exec 3>&1 26eval ` 27exec 4>&1 >&3 3>&- 28{ 29 stuff 4>&- 30 echo "c=$c" >&4 31}` 32echo c2 is $c 33 34unset -f stuff 35 36stuff() 37{ 38 c=3 39 { sleep 5 < /dev/null >/dev/null 2>&1 & } & 40} 41 42exec 3>&1 43eval ` 44exec 4>&1 >&3 3>&- 45{ 46 stuff 4>&- 47 echo "c=$c" >&4 48}` 49echo c3 is $c 50 51unset -f stuff 52 53stuff() 54{ 55 c=4 56 { sleep 5 < /dev/null >/dev/null 2>&1 & } 57} 58 59exec 3>&1 60eval ` 61exec 4>&1 >&3 3>&- 62{ 63 stuff 4>&- 64 echo "c=$c" >&4 65}` 66echo c4 is $c 67 68# fixed in bash-3.1 69echo 'exec <&3' | ${THIS_SH} 3<&0 70