I saw this script and I'm not sure why or how it works:
cat >> test << STOP
line 1
line 2
line 3
STOP
or equally
cat >> test << EOF
line 1
line 2
line 3
EOF
That is known as a "Here Tag". Basically it tells the shell that
you are going to enter a multi-line string until "Here". You could
call it anything you want, not just EOF or STOP.
Code:
[mb@ironmaiden mb]$ cat > test
<
> Hello
> world
> HERE
The <
multi-lines until the HERE tag. Thus the shell waits until it sees
HERE to consider the rest of the stuff above it as input for
cat.
Some rules about the Here tags:
1. The tag can be any string, uppercase or lowercase, though most
people use uppercase by convention.
2. The tag will not be considered as a Here tag if there are other
words in that line. In this case, it will merely be considered part
of the string. The tag should be by itself on a separate line, to
be considered a tag.
3. The tag should have no leading or trailing spaces in that line
to be considered a tag. Otherwise it will be considered as part of
the string.
Here's another chunk to consider:
Code:
[mb@ironmaiden mb]$ cat >> test
<
> Hello world HERE
string
> This is a test
> HERE
string
> and a new line
> HERE
Note that in the above, we have the word HERE showing up 3 times.
The first two times, it occurs with other words or leading spaces
and hence it is considered as part of the string.