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
|