原文:

读取命令行上的参数

awk 'BEGIN{for (i=0;i<ARGC;i++)print ARGV[i]}' 1 2 3 4 5

输出结果:

awk

1

2

3

4

5

说明:

ARGC:为一整数,代表命令行上除选项-v –f及其对应参数外所有参数的数目

ARGV[]:为一字符串数组:ARGV[0],ARGV[1],ARGV[2]…ARGV[ARGC-1]

如上例:ARGC=6

ARGV[0]=”awk”

ARGV[1]=”1”

ARGV[2]=”2”

……

ARGV[5]=”5”

awk 通过 ARGC 来判断应开启的数据文件个数.但使用者可改变 ARGC;  ARGC 之值被使用者设为 1 ;awk将被蒙骗,误以为命令行上并无数据文件文件名故不会以 ARGV[1], ARGV[2],..为文件名来打开文件读取数据但在程序中仍可通过 ARGV[1], ARGV[2],..来取得命令行上的数据.

例子:

awk 'BEGIN{ARGC=2} {print $0ARGV[1],ARGV[2]}' emp.dat reg.dat

输出结果:

A341 Dan 110 215 emp.dat reg.dat

P158 Max 130 209 emp.dat reg.dat

P148 John 125 220 emp.dat reg.dat

A123 Linda 95 210 emp.dat reg.da

说明:因为ARGC=2所有awk只打开参数ARGV[1](emp.dat)对应的文件,将只会输出emp.dat文件的内容,但是在awk依然可以使用参数ARGV[2]