]> git.ipfire.org Git - thirdparty/bash.git/blob - tests/coproc.tests
commit bash-20150703 snapshot
[thirdparty/bash.git] / tests / coproc.tests
1 : ${TMPDIR:=/tmp}
2 TMPOUT=${TMPDIR}/coproc-wait-$BASHPID
3
4 coproc { echo a b c; sleep 2; }
5
6 case $COPROC_PID in
7 [0-9]*) ;;
8 *) echo COPROC_PID not integer ;;
9 esac
10
11 echo ${COPROC[@]}
12
13 read LINE <&${COPROC[0]}
14 echo $LINE
15
16 wait $COPROC_PID
17
18 coproc REFLECT { cat - ; }
19
20 case $REFLECT_PID in
21 [0-9]*) ;;
22 *) echo REFLECT_PID not integer ;;
23 esac
24
25 echo ${REFLECT[@]}
26
27 echo flop >&${REFLECT[1]}
28 read LINE <&${REFLECT[0]}
29
30 echo $LINE
31
32 exec 2>$TMPOUT # catch stray job termination messages
33 kill $REFLECT_PID
34 wait $REFLECT_PID >$TMPOUT 2>&1 || echo "coproc.tests: REFLECT: status $?"
35 grep -q 'Terminated.*coproc.*REFLECT' < $TMPOUT || {
36 echo "coproc.tests: wait for REFLECT failed" >&2
37 }
38 rm -f $TMPOUT
39 exec 2>&1
40
41 coproc xcase -n -u
42
43 case $COPROC_PID in
44 [0-9]*) ;;
45 *) echo COPROC_PID not integer ;;
46 esac
47
48 echo ${COPROC[@]}
49
50 echo foo >&${COPROC[1]}
51 read <&${COPROC[0]}
52
53 echo $REPLY
54 echo ${COPROC[@]}
55
56 cat /etc/passwd | grep root | awk -F: '{print $1;}' | sed 1q
57
58 exec 4<&${COPROC[0]}-
59 exec >&${COPROC[1]}-
60
61 echo ${COPROC[@]}
62
63 read foo <&4
64 echo $foo >&2
65
66 exit 0