torabi
July 17, 2012, 6:13am
1
Dears,
I am new to linux scripting and I was look for a way to auto login to a server using sftp to download a file.
I found one and it is working fine. But i don't know the meaning of <<EOF in the code. Any one explain it to me:
#!/bin/sh
HOST=yourservername
USER=yourusername
PASS=yourpassword
echo "sftping file ..."
lftp -u ${USER},${PASS} sftp://${HOST} <<EOF
cd /tmp
get tmpfile
bye
EOF
echo "done"
Scott
July 17, 2012, 6:15am
2
It's meaning is in a "here-document".
Your shell man-page should describe the construct for you.
Here Documents
This type of redirection instructs the shell to read input from the current source until a line containing only word (with no trailing blanks) is seen.
All of the lines read up to that point are then used as the standard input for a command.
The format of here-documents is:
<<[-]word
here-document
delimiter
No parameter expansion, command substitution, arithmetic expansion, or pathname expansion is performed on word. If any characters in word are quoted,
the delimiter is the result of quote removal on word, and the lines in the here-document are not expanded. If word is unquoted, all lines of the here-
document are subjected to parameter expansion, command substitution, and arithmetic expansion. In the latter case, the character sequence \<newline> is
ignored, and \ must be used to quote the characters \, $, and `.
If the redirection operator is <<-, then all leading tab characters are stripped from input lines and the line containing delimiter. This allows here-
documents within shell scripts to be indented in a natural fashion.
1 Like