github.com/benhoyt/goawk@v1.8.1/testdata/T.getline (about) 1 echo T.getline: test getline function 2 3 awk=${awk-../a.out} 4 5 who >foo1 6 cat foo1 | $awk ' 7 BEGIN { 8 while (getline) 9 print 10 exit 11 } 12 ' >foo 13 cmp -s foo1 foo || echo 'BAD: T.getline (bare getline)' 14 15 who >foo1 16 cat foo1 | $awk ' 17 BEGIN { 18 while (getline xxx) 19 print xxx 20 exit 21 } 22 ' >foo 23 cmp -s foo1 foo || echo 'BAD: T.getline (getline xxx)' 24 25 $awk ' 26 BEGIN { 27 while (getline <"/etc/passwd") 28 print 29 exit 30 } 31 ' >foo 32 cmp -s /etc/passwd foo || echo 'BAD: T.getline (getline <file)' 33 34 cat /etc/passwd | $awk ' 35 BEGIN { 36 while (getline <"-") # stdin 37 print 38 exit 39 } 40 ' >foo 41 cmp -s /etc/passwd foo || echo 'BAD: T.getline (getline <"-")' 42 43 $awk ' 44 BEGIN { 45 while (getline <ARGV[1]) 46 print 47 exit 48 } 49 ' /etc/passwd >foo 50 cmp -s /etc/passwd foo || echo 'BAD: T.getline (getline <arg)' 51 52 $awk ' 53 BEGIN { 54 while (getline x <ARGV[1]) 55 print x 56 exit 57 } 58 ' /etc/passwd >foo 59 cmp -s /etc/passwd foo || echo 'BAD: T.getline (getline x <arg)' 60 61 $awk ' 62 BEGIN { 63 while (("cat " ARGV[1]) | getline) 64 print 65 exit 66 } 67 ' /etc/passwd >foo 68 cmp -s /etc/passwd foo || echo 'BAD: T.getline (cat arg | getline)' 69 70 $awk ' 71 BEGIN { 72 while (("cat " ARGV[1]) | getline x) 73 print x 74 exit 75 } 76 ' /etc/passwd >foo 77 cmp -s /etc/passwd foo || echo 'BAD: T.getline (cat arg | getline x)' 78 79 $awk ' BEGIN { print getline <"/glop/glop/glop" } ' >foo 80 echo '-1' >foo1 81 cmp -s foo foo1 || echo 'BAD: T.getline (non-existent file)' 82 83 echo 'false false equal' >foo1 84 $awk 'BEGIN { 85 "echo 0" | getline 86 if ($0) printf "true " 87 else printf "false " 88 if ($1) printf "true " 89 else printf "false " 90 if ($0==$1) printf "equal\n" 91 else printf "not equal\n" 92 }' >foo2 93 cmp -s foo1 foo2 || echo 1>&2 'BAD: T.getline bad $0 type in cmd|getline' 94 95 echo 'L1 96 L2' | $awk 'BEGIN { $0="old stuff"; $1="new"; getline x; print}' >foo1 97 echo 'new stuff' >foo2 98 cmp -s foo1 foo2 || echo 1>&2 'BAD: T.getline bad update $0'