The
here document operator
<<
(
8.18
)
is used in shell scripts.
It tells the shell to take lines from the script as standard input to a command.
The example below shows
a loop (
45.17
)
that prints three nasty form letters with the
lpr
(
43.2
)
command.
Each letter has a different person's name and the current date at the top.
You can put this loop into a
shell script (
44.2
)
or just type it in
at a Bourne shell prompt (
9.12
,
9.13
)
.
Each line of the loop body starts with a TAB character, which the
<<-
operator removes before the printer gets the text:
for person in "Mary Smith" "Doug Jones" "Alison Eddy"
do
lpr <<- ENDMSG
`date`
Dear $person,
This is your last notice. Buy me pizza tonight or
else I'll type "rm -r *" when you're not looking.
This is not a joak.
Signed,
The midnight skulker
ENDMSG
done
Warning!
|
This loop runs three
lpr
commands; each form letter prints on a
separate page.
The shell reads the standard input until it finds the
terminator word, which in this case is
ENDMSG
.
The word (
ENDMSG
) has to be on a line all by itself.
(Some Bourne shells don't have the
<<-
operator to remove
leading TAB characters.
In that case, use
<<
and don't indent the loop body.)
The
backquotes (
9.16
)
run the
date
(
51.10
)
command and output its date;
$person
is replaced with the person's name set at the top of the
loop.
The rest of the text is copied as is to the standard input of the
lpr
command. |