Node:Getline/Variable/File, Next:Getline/Pipe, Previous:Getline/File, Up:Getline
getline
into a Variable from a FileUse getline var < file
to read input
from the file
file, and put it in the variable var. As above, file
is a string-valued expression that specifies the file from which to read.
In this version of getline
, none of the built-in variables are
changed and the record is not split into fields. The only variable
changed is var.
For example, the following program copies all the input files to the
output, except for records that say @include filename
.
Such a record is replaced by the contents of the file
filename:
{ if (NF == 2 && $1 == "@include") { while ((getline line < $2) > 0) print line close($2) } else print }
Note here how the name of the extra input file is not built into
the program; it is taken directly from the data, specifically from the second field on
the @include
line.
The close
function is called to ensure that if two identical
@include
lines appear in the input, the entire specified file is
included twice.
See Closing Input and Output Redirections.
One deficiency of this program is that it does not process nested
@include
statements
(i.e., @include
statements in included files)
the way a true macro preprocessor would.
See An Easy Way to Use Library Functions, for a program
that does handle nested @include
statements.