| echo T.argv: misc tests of argc and argv |
| |
| awk=${awk-../a.out} |
| |
| echo >foo1 |
| echo >foo2 |
| $awk ' |
| BEGIN { |
| for (i = 1; i < ARGC-1; i++) |
| printf "%s ", ARGV[i] |
| if (ARGC > 1) |
| printf "%s", ARGV[i] |
| printf "\n" |
| exit |
| }' * >foo1 |
| echo * >foo2 |
| diff foo1 foo2 || echo 'BAD: T.argv (echo1 *)' |
| |
| $awk ' |
| BEGIN { |
| for (i = 1; i < ARGC; i++) { |
| printf "%s", ARGV[i] |
| if (i < ARGC-1) |
| printf " " |
| } |
| printf "\n" |
| exit |
| }' * >foo1 |
| echo * >foo2 |
| diff foo1 foo2 || echo 'BAD: T.argv (echo2 *)' |
| |
| $awk ' |
| BEGIN { |
| print ARGC |
| ARGV[ARGC-1] = "" |
| for (i=0; i < ARGC; i++) |
| print ARGV[i] |
| exit |
| } |
| ' a bc def gh >foo1 |
| echo "5 |
| $awk |
| a |
| bc |
| def |
| " >foo2 |
| diff foo1 foo2 || echo 'BAD: T.argv (argc *)' |
| |
| echo '1 |
| 2 |
| 3' >foo0 |
| echo 'foo1 |
| foo2 |
| foo3' >foo1 |
| $awk '{print L $0}' L=foo <foo0 >foo2 |
| diff foo1 foo2 || echo 'BAD: T.argv (L=foo <foo1)' |
| |
| echo '1 |
| 2 |
| 3' >foo0 |
| echo 'foo1 |
| foo2 |
| foo3' >foo1 |
| $awk '{print L $0}' L=foo foo0 >foo2 |
| diff foo1 foo2 || echo 'BAD: T.argv (L=foo foo1)' |
| |
| echo '1 |
| 2 |
| 3' >foo0 |
| echo 'foo1 |
| foo2 |
| foo3' >foo1 |
| cat foo0 | $awk '{print L $0}' L=foo - >foo2 |
| diff foo1 foo2 || echo 'BAD: T.argv (L=foo -)' |
| |
| echo '1 |
| 2 |
| 3' >foo0 |
| echo 'foo1 |
| foo2 |
| foo3 |
| glop1 |
| glop2 |
| glop3' >foo1 |
| $awk '{print L $0}' L=foo foo0 L=glop foo0 >foo2 |
| diff foo1 foo2 || echo 'BAD: T.argv (L=foo L=glop)' |
| |
| echo '1 |
| 2 |
| 3' >foo0 |
| echo '111 |
| 112 |
| 113 |
| 221 |
| 222 |
| 223' >foo1 |
| $awk '{print L $0}' L=11 foo0 L=22 foo0 >foo2 |
| diff foo1 foo2 || echo 'BAD: T.argv (L=11 L=22)' |
| |
| echo 3.345 >foo1 |
| $awk 'BEGIN { print ARGV[1] + ARGV[2]}' 1 2.345 >foo2 |
| diff foo1 foo2 || echo 'BAD: T.argv (ARGV[1] + ARGV[2])' |
| |
| echo 3.345 >foo1 |
| x1=1 x2=2.345 $awk 'BEGIN { print ENVIRON["x1"] + ENVIRON["x2"]}' 1 2.345 >foo2 |
| diff foo1 foo2 || echo 'BAD: T.argv (ENVIRON[x1] + ENVIRON[x2])' |
| |
| |
| echo 'foo1' >foo1 |
| echo 'foo2' >foo2 |
| echo 'foo3' >foo3 |
| $awk 'BEGIN { ARGV[2] = "" } |
| { print }' foo1 foo2 foo3 >foo4 |
| echo 'foo1 |
| foo3' >foo5 |
| diff foo4 foo5 || echo 'BAD: T.argv zap ARGV[2]' |
| |
| echo hi > foo1 ; mv foo1 foo2 |
| $awk 'BEGIN { ARGV[1] = "foo2" ; print FILENAME } |
| { print FILENAME }' foo1 >foo3 |
| echo ' |
| foo2' >foo4 |
| diff foo3 foo4 || echo 'BAD: T.argv startup FILENAME' |
| # assumes that startup FILENAME is "" |
| |
| |
| # test data balanced on pinhead... |
| echo 'ARGV[3] is /dev/null |
| ARGV[0] is ../a.out |
| ARGV[1] is /dev/null' >foo1 |
| |
| $awk 'BEGIN { # this is a variant of arnolds original example |
| ARGV[1] = "/dev/null" |
| ARGV[2] = "glotch" # file open must skipped deleted argv |
| ARGV[3] = "/dev/null" |
| ARGC = 4 |
| delete ARGV[2] |
| } |
| # note that input is read here |
| END { |
| for (i in ARGV) |
| printf("ARGV[%d] is %s\n", i, ARGV[i]) |
| }' >foo2 |
| diff foo1 foo2 || echo 'BAD: T.argv delete ARGV[2]' |