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 8RESULT=0 9 10fail() { 11 echo "$1" >&2 12 RESULT=1 13} 14 15echo T.-f-f: check multiple -f arguments 16 17TEMP0=$WORKDIR/test.temp.0 18TEMP1=$WORKDIR/test.temp.1 19TEMP2=$WORKDIR/test.temp.2 20TEMP3=$WORKDIR/test.temp.3 21TEMP4=$WORKDIR/test.temp.4 22TEMP5=$WORKDIR/test.temp.5 23TEMP6=$WORKDIR/test.temp.6 24 25echo 'begin 26end' > $TEMP0 27echo 'BEGIN { print "begin" }' > $TEMP1 28echo 'END { print "end" }' > $TEMP2 29echo xxx | $AWK -f $TEMP1 -f $TEMP2 > $TEMP3 30diff $TEMP0 $TEMP3 || fail 'BAD: T.-f-f multiple -fs' 31 32 33echo '/a/' | $AWK -f - /etc/passwd > $TEMP1 34$AWK '/a/' /etc/passwd > $TEMP2 35diff $TEMP1 $TEMP2 || fail 'BAD: T.-f-f -f -' 36 37 38cp /etc/passwd $TEMP1 39echo '/./ {' > $TEMP2 40echo 'print' > $TEMP3 41echo '}' > $TEMP4 42$AWK -f $TEMP2 -f $TEMP3 -f $TEMP4 /etc/passwd > $TEMP5 43diff $TEMP1 $TEMP5 || fail 'BAD: T.-f-f 3 files' 44 45 46echo '/./ {' > $TEMP2 47echo 'print' > $TEMP3 48echo ' 49 50 51 52]' > $TEMP4 53$AWK -f $TEMP2 -f $TEMP3 -f $TEMP4 /etc/passwd > $TEMP5 2> $TEMP6 54grep "syntax error.*file $TEMP4" $TEMP6 >/dev/null 2>&1 || fail 'BAD: T.-f-f source file name' 55 56exit $RESULT 57