github.com/benhoyt/goawk@v1.8.1/testdata/T.argv (about) 1 echo T.argv: misc tests of argc and argv 2 3 awk=${awk-../a.out} 4 5 echo >foo1 6 echo >foo2 7 $awk ' 8 BEGIN { 9 for (i = 1; i < ARGC-1; i++) 10 printf "%s ", ARGV[i] 11 if (ARGC > 1) 12 printf "%s", ARGV[i] 13 printf "\n" 14 exit 15 }' * >foo1 16 echo * >foo2 17 diff foo1 foo2 || echo 'BAD: T.argv (echo1 *)' 18 19 $awk ' 20 BEGIN { 21 for (i = 1; i < ARGC; i++) { 22 printf "%s", ARGV[i] 23 if (i < ARGC-1) 24 printf " " 25 } 26 printf "\n" 27 exit 28 }' * >foo1 29 echo * >foo2 30 diff foo1 foo2 || echo 'BAD: T.argv (echo2 *)' 31 32 $awk ' 33 BEGIN { 34 print ARGC 35 ARGV[ARGC-1] = "" 36 for (i=0; i < ARGC; i++) 37 print ARGV[i] 38 exit 39 } 40 ' a bc def gh >foo1 41 echo "5 42 $awk 43 a 44 bc 45 def 46 " >foo2 47 diff foo1 foo2 || echo 'BAD: T.argv (argc *)' 48 49 echo '1 50 2 51 3' >foo0 52 echo 'foo1 53 foo2 54 foo3' >foo1 55 $awk '{print L $0}' L=foo <foo0 >foo2 56 diff foo1 foo2 || echo 'BAD: T.argv (L=foo <foo1)' 57 58 echo '1 59 2 60 3' >foo0 61 echo 'foo1 62 foo2 63 foo3' >foo1 64 $awk '{print L $0}' L=foo foo0 >foo2 65 diff foo1 foo2 || echo 'BAD: T.argv (L=foo foo1)' 66 67 echo '1 68 2 69 3' >foo0 70 echo 'foo1 71 foo2 72 foo3' >foo1 73 cat foo0 | $awk '{print L $0}' L=foo - >foo2 74 diff foo1 foo2 || echo 'BAD: T.argv (L=foo -)' 75 76 echo '1 77 2 78 3' >foo0 79 echo 'foo1 80 foo2 81 foo3 82 glop1 83 glop2 84 glop3' >foo1 85 $awk '{print L $0}' L=foo foo0 L=glop foo0 >foo2 86 diff foo1 foo2 || echo 'BAD: T.argv (L=foo L=glop)' 87 88 echo '1 89 2 90 3' >foo0 91 echo '111 92 112 93 113 94 221 95 222 96 223' >foo1 97 $awk '{print L $0}' L=11 foo0 L=22 foo0 >foo2 98 diff foo1 foo2 || echo 'BAD: T.argv (L=11 L=22)' 99 100 echo 3.345 >foo1 101 $awk 'BEGIN { print ARGV[1] + ARGV[2]}' 1 2.345 >foo2 102 diff foo1 foo2 || echo 'BAD: T.argv (ARGV[1] + ARGV[2])' 103 104 echo 3.345 >foo1 105 x1=1 x2=2.345 $awk 'BEGIN { print ENVIRON["x1"] + ENVIRON["x2"]}' 1 2.345 >foo2 106 diff foo1 foo2 || echo 'BAD: T.argv (ENVIRON[x1] + ENVIRON[x2])' 107 108 109 echo 'foo1' >foo1 110 echo 'foo2' >foo2 111 echo 'foo3' >foo3 112 $awk 'BEGIN { ARGV[2] = "" } 113 { print }' foo1 foo2 foo3 >foo4 114 echo 'foo1 115 foo3' >foo5 116 diff foo4 foo5 || echo 'BAD: T.argv zap ARGV[2]' 117 118 echo hi > foo1 ; mv foo1 foo2 119 $awk 'BEGIN { ARGV[1] = "foo2" ; print FILENAME } 120 { print FILENAME }' foo1 >foo3 121 echo ' 122 foo2' >foo4 123 diff foo3 foo4 || echo 'BAD: T.argv startup FILENAME' 124 # assumes that startup FILENAME is "" 125 126 127 # test data balanced on pinhead... 128 echo 'ARGV[3] is /dev/null 129 ARGV[0] is ../a.out 130 ARGV[1] is /dev/null' >foo1 131 132 $awk 'BEGIN { # this is a variant of arnolds original example 133 ARGV[1] = "/dev/null" 134 ARGV[2] = "glotch" # file open must skipped deleted argv 135 ARGV[3] = "/dev/null" 136 ARGC = 4 137 delete ARGV[2] 138 } 139 # note that input is read here 140 END { 141 for (i in ARGV) 142 printf("ARGV[%d] is %s\n", i, ARGV[i]) 143 }' >foo2 144 diff foo1 foo2 || echo 'BAD: T.argv delete ARGV[2]'