xref: /illumos-gate/usr/src/test/util-tests/tests/awk/tests/T.redir (revision e982f11fb2fc266a3d04a69ea3edcf51f44b1e0f)
1#!/bin/bash
2
3if [[ -z "$AWK" || -z "$WORKDIR" ]]; then
4    printf '$AWK and $WORKDIR must be set\n' >&2
5    exit 1
6fi
7
8TEMP1=$WORKDIR/test.temp.1
9TEMP2=$WORKDIR/test.temp.2
10
11RESULT=0
12
13fail() {
14	echo "$1" >&2
15	RESULT=1
16}
17
18echo T.redir: test redirections
19
20$AWK '{ print >"'$TEMP1'" }' /etc/passwd
21diff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print >"test.temp.1")'
22
23rm -f $TEMP1
24$AWK '{ print >>"'$TEMP1'" }' /etc/passwd
25diff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print >>"test.temp.1")'
26
27rm -f $TEMP1
28$AWK 'NR%2 == 1 { print >>"'$TEMP1'" }
29      NR%2 == 0 { print >"'$TEMP1'" }' /etc/passwd
30diff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print > and >>"test.temp.1")'
31
32rm -f $TEMP1
33$AWK '{ print | "cat > '$TEMP1'" }' /etc/passwd
34diff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print | "cat > test.temp.1")'
35
36# tests flush of stdout before opening pipe
37echo '   head
381
392' > $TEMP1
40$AWK 'BEGIN { print "   head"
41	for (i = 1; i < 3; i++)
42		print i | "sort" }' > $TEMP2
43diff $TEMP1 $TEMP2 || fail 'BAD: T.redir (buffering)'
44
45rm -f $TEMP1 $TEMP2
46$AWK '{ print >"/dev/stderr" }' /etc/passwd 1> $TEMP1 2> $TEMP2
47diff $TEMP2 /etc/passwd || fail 'BAD: T.redir (print >"/dev/stderr")'
48diff $TEMP1 /dev/null  || fail 'BAD: T.redir (print >"/dev/stderr")'
49
50rm -f $TEMP1 $TEMP2
51$AWK '{ print >"/dev/stdout" }' /etc/passwd 1> $TEMP1 2> $TEMP2
52diff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print >"/dev/stdout")'
53diff $TEMP2 /dev/null  || fail 'BAD: T.redir (print >"/dev/stderr")'
54
55exit $RESULT
56