echo T.getline: test getline function awk=${awk-../a.out} who >foo1 cat foo1 | $awk ' BEGIN { while (getline) print exit } ' >foo cmp -s foo1 foo || echo 'BAD: T.getline (bare getline)' who >foo1 cat foo1 | $awk ' BEGIN { while (getline xxx) print xxx exit } ' >foo cmp -s foo1 foo || echo 'BAD: T.getline (getline xxx)' $awk ' BEGIN { while (getline <"/etc/passwd") print exit } ' >foo cmp -s /etc/passwd foo || echo 'BAD: T.getline (getline foo cmp -s /etc/passwd foo || echo 'BAD: T.getline (getline <"-")' $awk ' BEGIN { while (getline foo cmp -s /etc/passwd foo || echo 'BAD: T.getline (getline foo cmp -s /etc/passwd foo || echo 'BAD: T.getline (getline x foo cmp -s /etc/passwd foo || echo 'BAD: T.getline (cat arg | getline)' $awk ' BEGIN { while (("cat " ARGV[1]) | getline x) print x exit } ' /etc/passwd >foo cmp -s /etc/passwd foo || echo 'BAD: T.getline (cat arg | getline x)' $awk ' BEGIN { print getline <"/glop/glop/glop" } ' >foo echo '-1' >foo1 cmp -s foo foo1 || echo 'BAD: T.getline (non-existent file)' echo 'false false equal' >foo1 $awk 'BEGIN { "echo 0" | getline if ($0) printf "true " else printf "false " if ($1) printf "true " else printf "false " if ($0==$1) printf "equal\n" else printf "not equal\n" }' >foo2 cmp -s foo1 foo2 || echo 1>&2 'BAD: T.getline bad $0 type in cmd|getline' echo 'L1 L2' | $awk 'BEGIN { $0="old stuff"; $1="new"; getline x; print}' >foo1 echo 'new stuff' >foo2 cmp -s foo1 foo2 || echo 1>&2 'BAD: T.getline bad update $0'