1*e6d6c189SCody Peter Mello#!/bin/bash 2*e6d6c189SCody Peter Mello 3*e6d6c189SCody Peter Melloif [[ -z "$AWK" || -z "$WORKDIR" ]]; then 4*e6d6c189SCody Peter Mello printf '$AWK and $WORKDIR must be set\n' >&2 5*e6d6c189SCody Peter Mello exit 1 6*e6d6c189SCody Peter Mellofi 7*e6d6c189SCody Peter Mello 8*e6d6c189SCody Peter MelloTEMP1=$WORKDIR/test.temp.1 9*e6d6c189SCody Peter MelloTEMP2=$WORKDIR/test.temp.2 10*e6d6c189SCody Peter Mello 11*e6d6c189SCody Peter MelloRESULT=0 12*e6d6c189SCody Peter Mello 13*e6d6c189SCody Peter Mellofail() { 14*e6d6c189SCody Peter Mello echo "$1" >&2 15*e6d6c189SCody Peter Mello RESULT=1 16*e6d6c189SCody Peter Mello} 17*e6d6c189SCody Peter Mello 18*e6d6c189SCody Peter Melloecho T.redir: test redirections 19*e6d6c189SCody Peter Mello 20*e6d6c189SCody Peter Mello$AWK '{ print >"'$TEMP1'" }' /etc/passwd 21*e6d6c189SCody Peter Mellodiff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print >"test.temp.1")' 22*e6d6c189SCody Peter Mello 23*e6d6c189SCody Peter Mellorm -f $TEMP1 24*e6d6c189SCody Peter Mello$AWK '{ print >>"'$TEMP1'" }' /etc/passwd 25*e6d6c189SCody Peter Mellodiff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print >>"test.temp.1")' 26*e6d6c189SCody Peter Mello 27*e6d6c189SCody Peter Mellorm -f $TEMP1 28*e6d6c189SCody Peter Mello$AWK 'NR%2 == 1 { print >>"'$TEMP1'" } 29*e6d6c189SCody Peter Mello NR%2 == 0 { print >"'$TEMP1'" }' /etc/passwd 30*e6d6c189SCody Peter Mellodiff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print > and >>"test.temp.1")' 31*e6d6c189SCody Peter Mello 32*e6d6c189SCody Peter Mellorm -f $TEMP1 33*e6d6c189SCody Peter Mello$AWK '{ print | "cat > '$TEMP1'" }' /etc/passwd 34*e6d6c189SCody Peter Mellodiff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print | "cat > test.temp.1")' 35*e6d6c189SCody Peter Mello 36*e6d6c189SCody Peter Mello# tests flush of stdout before opening pipe 37*e6d6c189SCody Peter Melloecho ' head 38*e6d6c189SCody Peter Mello1 39*e6d6c189SCody Peter Mello2' > $TEMP1 40*e6d6c189SCody Peter Mello$AWK 'BEGIN { print " head" 41*e6d6c189SCody Peter Mello for (i = 1; i < 3; i++) 42*e6d6c189SCody Peter Mello print i | "sort" }' > $TEMP2 43*e6d6c189SCody Peter Mellodiff $TEMP1 $TEMP2 || fail 'BAD: T.redir (buffering)' 44*e6d6c189SCody Peter Mello 45*e6d6c189SCody Peter Mellorm -f $TEMP1 $TEMP2 46*e6d6c189SCody Peter Mello$AWK '{ print >"/dev/stderr" }' /etc/passwd 1> $TEMP1 2> $TEMP2 47*e6d6c189SCody Peter Mellodiff $TEMP2 /etc/passwd || fail 'BAD: T.redir (print >"/dev/stderr")' 48*e6d6c189SCody Peter Mellodiff $TEMP1 /dev/null || fail 'BAD: T.redir (print >"/dev/stderr")' 49*e6d6c189SCody Peter Mello 50*e6d6c189SCody Peter Mellorm -f $TEMP1 $TEMP2 51*e6d6c189SCody Peter Mello$AWK '{ print >"/dev/stdout" }' /etc/passwd 1> $TEMP1 2> $TEMP2 52*e6d6c189SCody Peter Mellodiff $TEMP1 /etc/passwd || fail 'BAD: T.redir (print >"/dev/stdout")' 53*e6d6c189SCody Peter Mellodiff $TEMP2 /dev/null || fail 'BAD: T.redir (print >"/dev/stderr")' 54*e6d6c189SCody Peter Mello 55*e6d6c189SCody Peter Melloexit $RESULT 56