1. Here-document

因为可以直接在命令行中使用重定向,而不需要文件作为重定向输入数据,这种方式也称为内置重定向输入(inline input redirection ,它将delimiter 之间的内容传递给cmd 作为输入内容(注意固定的格式形式),可以方便将几行文本传递给参数,比如打印帮助信息。并且here-documents中的行都支持参数扩展,命令替换,和数学表达式扩展,和文本用双引号引起来的效果一样。

 

cmd << HERE

Here Document Content 

HERE

 

  1. HERE只是一个标记,可以是任务字符串,结尾HERE要顶格,HERE本身不支持扩展(参考第二条)

  2. 第一个标记为HERE时,here document content 支持参数扩展,命令替换,算术扩展,路径扩展。可以使用\ 来转义here document content中的\,$,` ,引用特殊字符

  3. 第一个标记改为-HERE,忽略每行文本前的TAB字符(不删除空格字符),使用TAB以生成易于阅读的shell脚本。

  4. 第一个标记改为"HERE"或者'HERE',关闭变量替换

  5. 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

:代表什么都不做