(gawk.info.gz) Other Arguments
Info Catalog
(gawk.info.gz) Options
(gawk.info.gz) Invoking Gawk
(gawk.info.gz) Naming Standard Input
2.3 Other Command-Line Arguments
================================
Any additional arguments on the command line are normally treated as
input files to be processed in the order specified. However, an
argument that has the form `VAR=VALUE', assigns the value VALUE to the
variable VAR--it does not specify a file at all. (See Assignment
Options.)
All these arguments are made available to your `awk' program in the
`ARGV' array ( Built-in Variables). Command-line options and
the program text (if present) are omitted from `ARGV'. All other
arguments, including variable assignments, are included. As each
element of `ARGV' is processed, `gawk' sets the variable `ARGIND' to
the index in `ARGV' of the current element.
The distinction between file name arguments and variable-assignment
arguments is made when `awk' is about to open the next input file. At
that point in execution, it checks the file name to see whether it is
really a variable assignment; if so, `awk' sets the variable instead of
reading a file.
Therefore, the variables actually receive the given values after all
previously specified files have been read. In particular, the values of
variables assigned in this fashion are _not_ available inside a `BEGIN'
rule ( BEGIN/END), because such rules are run before `awk'
begins scanning the argument list.
The variable values given on the command line are processed for
escape sequences ( Escape Sequences). (d.c.)
In some earlier implementations of `awk', when a variable assignment
occurred before any file names, the assignment would happen _before_
the `BEGIN' rule was executed. `awk''s behavior was thus inconsistent;
some command-line assignments were available inside the `BEGIN' rule,
while others were not. Unfortunately, some applications came to depend
upon this "feature." When `awk' was changed to be more consistent, the
`-v' option was added to accommodate applications that depended upon
the old behavior.
The variable assignment feature is most useful for assigning to
variables such as `RS', `OFS', and `ORS', which control input and
output formats before scanning the data files. It is also useful for
controlling state if multiple passes are needed over a data file. For
example:
awk 'pass == 1 { PASS 1 STUFF }
pass == 2 { PASS 2 STUFF }' pass=1 mydata pass=2 mydata
Given the variable assignment feature, the `-F' option for setting
the value of `FS' is not strictly necessary. It remains for historical
compatibility.
Info Catalog
(gawk.info.gz) Options
(gawk.info.gz) Invoking Gawk
(gawk.info.gz) Naming Standard Input
automatically generated by
info2html