shell中的Here Document
目录
1、什么是Here Document
注意事项
2、cat + << here结合创建文件
3、Here Document的变形
(3.1)HERE中的变量
(3.2)<< 变为 <<-
4、参考链接
1、什么是Here Document
Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下
cmd << HEREDocument Content #一段信息HERE它的作用就是将两个 HERE之间的内容(Here Document Content 部分) 传递给cmd 作为输入参数。其中HERE相当于标记,可以是任何的字符串。
比如在终端中输入cat << EOF ,系统会提示继续进行输入,输入多行信息再输入EOF后,两个EOF之间输入的信息将输出到标准输出,这里是终端。如下:
$ cat << HERE> First Line> Second Line> Third Line > HEREFirst LineSecond LineThird Line注: >这个符号是终端产生的提示输入信息的标识符
注意事项
2、cat + << here结合创建文件
Here Document 与cat命令结合,可用于创建一个新的文件,这个是cat命令非常常用的用法。
使用格式:
cat << HERE > filenameDocument Content #一段信息HERE作用:HERE之间输入的信息将不回输出到标准输出,而是重定位到filename文件中,如果filename文件不存在,则会先创建此文件,再输入内容。
同时,上述命令可以在终端上直接使用,也可以在shell 脚本中使用,例如下面的here.sh 文件
cat << HERE > output.shecho "hello"echo "world"HERE使用 sh here.sh 命令运行这个脚本文件,会得到output.sh 这个新文件,里面的内容如下:
echo "hello"echo "world"注意:“cat << HERE > filename” 中的 > 符号,表示的是覆盖式的写入,会将文件之中内容先删除再写入;如果想要追加式的写入,需要换成 >> 符号,格式:“cat << HERE >> filename” 。
关于cat 与Here Document的结合使用,可以参考博客:《linux下cat命令详解》
3、Here Document的变形
(3.1)HERE中的变量
在Here Document 的内容中,不仅可以包括普通的字符,还可以在里面使用变量,例如将上面的here.sh 改为
cat << HERE > output.shecho "This is output"echo $1HERE运行命令:sh here.sh HereDocument ,然后查看output.sh的内容如下:
echo "This is output"echo HereDocument,因为,HereDocument是here.sh脚本的第一个参数,可以直接用shell中的特殊变量 $1表示,$1 被展开成为 HereDocument。
注意:如果不想HERE之间的变量自动展开,而是以字符串的形式正常输出,可以通过在起始的 HERE 的前后添加冒号 " 来实现,例如将上面的here.sh 改为
cat << "EOF" > output.shecho "This is output"echo $1EOF
得到的output.sh 的内容为:
echo "This is output"echo $1(3.2)<< 变为 <<-
Here Document 还有一个用法就是将 '<<' 变为 '<<-'。
使用 <<- 的唯一变化就是Here Document 的内容部分每行前面的 tab (制表符)将会被删除掉,这种用法是为了编写Here Document的时候可以将内容部分进行缩进,方便阅读代码。如:
cat <<- EOF > output.shecho "This is output"echo $1EOF得到的output.sh 的内容为:
echo "This is output"echo $1但是如果使用的是 <<,那么output.sh 的内容会变为:
echo "hello"echo "world"echo 之前的tab 不会被删除!
4、参考链接
Wiki: Here Document
Learn Linux, 101: Streams, pipes, and redirects
本文主要参考了一下文章,并进行相关修改:
https://my.oschina.net/u/1032146/blog/146941#OSC_h3_3
总结
以上是生活随笔为你收集整理的shell中的Here Document的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: linux shel的学习网站(推荐)
- 下一篇: 驱动编程中的头文件与内核源码的关系