65 lines
		
	
	
	
		
			1,019 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
	
		
			1,019 B
		
	
	
	
		
			Text
		
	
	
	
	
	
: ${TMPDIR:=/tmp}
 | 
						|
TMPOUT=${TMPDIR}/coproc-wait-$BASHPID
 | 
						|
 | 
						|
coproc { echo a b c; sleep 2; }
 | 
						|
 | 
						|
case $COPROC_PID in
 | 
						|
[0-9]*)	;;
 | 
						|
*)	echo COPROC_PID not integer ;;
 | 
						|
esac
 | 
						|
 | 
						|
echo ${COPROC[@]}
 | 
						|
 | 
						|
read LINE <&${COPROC[0]}
 | 
						|
echo $LINE
 | 
						|
 | 
						|
wait $COPROC_PID
 | 
						|
 | 
						|
coproc REFLECT { cat - ; }
 | 
						|
 | 
						|
case $REFLECT_PID in
 | 
						|
[0-9]*)	;;
 | 
						|
*)	echo REFLECT_PID not integer ;;
 | 
						|
esac
 | 
						|
 | 
						|
echo ${REFLECT[@]}
 | 
						|
 | 
						|
echo flop >&${REFLECT[1]}
 | 
						|
read LINE <&${REFLECT[0]}
 | 
						|
 | 
						|
echo $LINE
 | 
						|
 | 
						|
{ sleep 1; kill $REFLECT_PID; } &
 | 
						|
wait $REFLECT_PID >$TMPOUT 2>&1 || echo "coproc.tests: REFLECT: status $?"
 | 
						|
grep 'Terminated.*coproc.*REFLECT' < $TMPOUT >/dev/null 2>&1 || {
 | 
						|
	echo "coproc.tests: wait for REFLECT failed" >&2
 | 
						|
}
 | 
						|
rm -f $TMPOUT
 | 
						|
exec 2>&1
 | 
						|
 | 
						|
coproc xcase -n -u
 | 
						|
 | 
						|
case $COPROC_PID in
 | 
						|
[0-9]*)	;;
 | 
						|
*)	echo COPROC_PID not integer ;;
 | 
						|
esac
 | 
						|
 | 
						|
echo ${COPROC[@]}
 | 
						|
 | 
						|
echo foo >&${COPROC[1]}
 | 
						|
read <&${COPROC[0]}
 | 
						|
 | 
						|
echo $REPLY
 | 
						|
echo ${COPROC[@]}
 | 
						|
 | 
						|
cat /etc/passwd | grep root | awk -F: '{print $1;}' | sed 1q
 | 
						|
 | 
						|
exec 4<&${COPROC[0]}-
 | 
						|
exec >&${COPROC[1]}-
 | 
						|
 | 
						|
echo ${COPROC[@]}
 | 
						|
 | 
						|
read foo <&4
 | 
						|
echo $foo >&2
 | 
						|
 | 
						|
exit 0
 |