here 文档

here文档是一种在命令行shell(如bash)和程序语言(像PHP等)中定义一个字串的方法。它可以保存字串里面的制表符,换行等空白字符,在某些语言中还允许在字串中进行变量替换和命令替换

变量替换

变量替换就是取出变量的值,直接使用$符号加上变量名。如$varName

命令替换

命令替换是指shell执行命令并该命令替换为命令执行后的结果。命令替换有两种方式:

1.使用反引号

for i in `cd /old/code/dir ; echo *.c`

do

    diff -c /old/code/dir/$i $i | more

done

2.使用$符号

for i in $(cd /old/code/dir ; echo *.c)

do

    diff -c /old/code/dir/$i $i

done | more

注意:使用第一种方式时候,内嵌的 backtick 符号和双引号都需要进行转义。而使用第二种方式,内嵌的括号则无需转义。尽量使用第二种方式。


here最通用的用法就是<<后跟一个分隔字符串,从下一行开始就是想要引用的文字,然后再单独的一行用相同的分隔字符串关闭。例如

 $ tr a-z A-Z <<END_TEXT

 > one two three

 > uno dos tres

 > END_TEXT

 ONE TWO THREE

 UNO DOS TRES

END_TEXT被用作标识符。注意:

  • END_TEXT只是一个标识而已,可以替换成任意的合法字符
  • 作为结尾的delimiter一定要顶格写,前面不能有任何字符
  • 作为结尾的delimiter后面也不能有任何的字符(包括空格)
  • 作为起始的delimiter前后的空格会被省略掉
<<的作用就是将内容重定向到前面的命令中。

在<<后面添加一个减号,可以使TAB字元被忽略。这允许在shell脚本中缩进here文档而不改变它们的值

 $ tr a-z A-Z <<-END_TEXT

 >         one two three

 >         uno dos tres

 > END_TEXT

 ONE TWO THREE

 UNO DOS TRES

here文档中也会进行变量替换和命令替换:



在shell脚本中可以使用shell函数来创建自定义的命令,是一种很方便的方法。

bash,ksh或zsh中也可以用here-字串:

 $ tr a-z A-Z <<<"Yes it is a string"

 YES IT IS A STRING

参考资料

http://zh.wikipedia.org/wiki/Here%E6%96%87%E6%A1%A3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值