You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
2.6 KiB

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]'