Here-document
因为可以直接在命令行中使用重定向,而不需要文件作为重定向输入数据,这种方式也称为内置重定向输入(inline input redirection ,它将delimiter 之间的内容传递给cmd 作为输入内容(注意固定的格式形式),可以方便将几行文本传递给参数,比如打印帮助信息。并且here-documents中的行都支持参数扩展,命令替换,和数学表达式扩展,和文本用双引号引起来的效果一样。
cmd << HERE
Here Document Content
HERE
HERE只是一个标记,可以是任务字符串,结尾HERE要顶格,HERE本身不支持扩展(参考第二条)
第一个标记为HERE时,here document content 支持参数扩展,命令替换,算术扩展,路径扩展。可以使用\ 来转义here document content中的\,$,` ,引用特殊字符
第一个标记改为-HERE时,忽略每行文本前的TAB字符(不删除空格字符),使用TAB以生成易于阅读的shell脚本。
第一个标记改为"HERE"或者'HERE'时,关闭变量替换
HERE document的另外一种形式cmd <<<HERE, 其中HERE本身支持扩展替换。如cat <<<`ls`
e.g
cat >catfile <<"eof"
# <<结束输入字符的意思 当键盘输入eof 时结束输入,相当于ctrl+d
生成临时文档
cat <<-HERE > /tmp/db2v10.rsp
PROD =$prodType
FILE =$DB2BASE
LIC_AGREEMENT =ACCEPT
INTERACTIVE =NONE
CONFIG_ONLY =NO
INSTALL_TYPE =TYPICAL
HERE
HERE document做多行批注
:<<HERE
批注1
批注2
批注3
如果你觉得无聊还可以继续批注4
HERE
:代表什么都不做
转载于:https://blog.51cto.com/adelphos/1609347