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