home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


UNIX Power Tools

UNIX Power ToolsSearch this book
Previous: 8.17 verbose and echo Variables Show Quoting Chapter 8
How the Shell Interprets What You Type
Next: 8.19 "Special" Characters and Operators
 

8.18 Here Documents

So far, we've talked about three different kinds of quoting: backslashes ( \ ), single quotes ( ' ), and double quotes ( <"> ). The shells support yet one more kind of quoting, called here documents . A here document is useful when you need to read something from standard input, but you don't want to create a file to provide that input; you want to put that input right into your shell script (or type it directly on the command line). To do so, use the << operator, followed by a special word:

sort >file <<EndOfSort
zygote
abacus
EndOfSort

This is very useful because variables ( 6.8 , 6.1 ) are evaluated during this operation. Here is a way to transfer a file using anonymous ftp ( 52.7 ) from a shell script:


#!/bin/sh
# Usage:
#     ftpfile machine file
# set -x
SOURCE=$1
FILE=$2
GETHOST="uname -n"
BFILE=`basename $FILE`
ftp -n $SOURCE <<EndFTP
ascii
user anonymous $USER@`$GETHOST`
get $FILE /tmp/$BFILE
EndFTP

As you can see, variables and command substitutions ( 9.16 ) are done. If you don't want those to be done, put a backslash in front of the name of the word:

cat >file <<\FunkyStriNG

Notice the funky string. This is done because it is very unlikely that I will want to put that particular combination of characters in any file. You should be warned that the C shell expects the matching word (at the end of the list) to be escaped the same way, i.e., \FunkyStriNG , while the Bourne shell does not. See article 45.26 .

[Most Bourne shells also have the <<- operator. The dash ( - ) at the end tells the shell to strip any TAB characters from the beginning of each line. Use this in shell scripts to indent a section of text without passing those TABs to the command's standard input. -JP ]

- BB


Previous: 8.17 verbose and echo Variables Show Quoting UNIX Power Tools Next: 8.19 "Special" Characters and Operators
8.17 verbose and echo Variables Show Quoting Book Index 8.19 "Special" Characters and Operators

The UNIX CD Bookshelf Navigation The UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System