linux shell的here document用法(cat EOF)
什么是Here Document?
Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下
cmd << delimiter
Here Document Content
delimiter
其作用是将两个 delimiter 之间的内容(Here Document Content 部分) 传递给cmd 作为输入参数;
比如在终端中输入cat << EOF,系统会提示继续进行输入,输入多行信息再输入EOF,中间输入的信息将会显示在屏幕上;如下:
fish@mangos:~$ cat << EOF
> First Line
> Second Line
> Third Line EOF
> EOF
First Line
Second Line
Third Line EOF
注:'>'这个符号是终端产生的提示输入信息的标识符
这里要注意几点:
EOF只是一个标识而已,可以替换成任意的合法字符(约定大于配置);
作为结尾的delimiter一定要顶格写,前面不能有任何字符;
作为结尾的delimiter后面也不能有任何的字符(包括空格!!!);
作为起始的delimiter前后的空格会被省略掉;
Here Document 不仅可以在终端上使用,在shell 文件中也可以使用,例如下面的here.sh 文件
cat << EOF > output.txt
echo "hello"
echo "world"
EOF
使用 sh here.sh 运行这个脚本文件,会得到output.txt 这个新文件,其内容如下:
echo "hello"
echo "world"
Here Document的变形
delimiter 与变量
在Here Document 的内容中,不仅可以包括普通的字符,还可以在里面使用变量;
例如将上面的here.sh 改为
cat << EOF > output.sh
echo "This is output"
echo $1
EOF
使用sh here.sh HereDocument 运行脚本得到output.sh的内容
echo "This is output"
echo HereDocument
在这里 $1 被展开成为了脚本的参数 HereDocument
但是有时候不想展开这个变量怎么办呢,可以通过在起始的 delimiter的前后添加 " 来实现,例如将上面的here.sh 改为
cat << "EOF" > output.sh #注意引号
echo "This is output"
echo $1
EOF
得到的output.sh 的内容为
echo "This is output"
echo $1
<< 变为 <<-
Here Document 还有一个用法就是将 '<<' 变为 '<<-'
使用 <<- 的唯一变化就是Here Document 的内容部分每行前面的tab(制表符)将会被删除掉;
该用法在编写Here Document时可将内容部分进行缩进,方便阅读代码.
转自:https://blog.csdn.net/wangjunjun2008/article/details/24351045
转载于:https://www.cnblogs.com/poissonnotes/p/9041737.html
linux shell的here document用法(cat EOF)相关推荐
- linux here用法,linux shell的here document用法(cat EOF)
什么是Here Document? Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下 cmd << delimiter Here Doc ...
- shell 的here document 用法、输入/输出重定向
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 什么是Here Document Here Document 是在Linux Shell 中的一种特 ...
- linux shell里面nohup的用法
为什么80%的码农都做不了架构师?>>> 百度了很多,但都不是官方的,按照linux命令中,一切可以--help的思想 我们就来 --help下. 其实linux命令不难学 只 ...
- linux shell awk 中 printf 用法
目录 printf 简介 printf 转义字符 printf 修饰符 printf 格式说明符 示例1 示例2 示例3 printf 简介 打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在 ...
- linux shell数组与字典用法总结
shell里面也有数组和所谓的字典,数组分为索引数组和关联数组(关联数组也就是在其他语言里面的字典,在数组和字典的操作方式基本一致). 1. 数组 1.1 创建数组 - 创建空数组 `names=() ...
- linux shell 逻辑判断 [] [[]] -n -z 用法区别
1.在中括号中,判断变量的值, 加不加双引号的问题? -z 判断 变量的值,是否为空: zero = 0 - 变量的值,为空,返回0,为true - 变量的值,非空,返回1,为false -n 判断变 ...
- linux cat eof如何指定变量,Linux cat和EOF的使用
在某些场合,可能我们需要在脚本中生成一个临时文件,然后把该文件作为最终文件放入目录中.(可参考ntop.spec文件)这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判 ...
- linux shell脚本EOF妙用
原文:https://blog.csdn.net/zongshi1992/article/details/71693045 在平时的运维工作中,我们经常会碰到这样一个场景: 执行脚本的时候,需要往一个 ...
- linux 关联数组,Linux shell数组与关联数组的用法实例
Linux shell数组与关联数组的用法实例 1. 关联数组 使用 declare -A(declare 的用法请使用 help 进行查看,help declare) 进行声明关联数组变量: $ d ...
最新文章
- 【javaweb】eclipse重启后tomcat打不开解决方法
- Android 之 布局训练
- 2016 -1 -3 导航控制器的学习
- 光伏发电项目将全面摸底复核
- 算法与数据结构(part1)--算法简介及大O表示法
- c# uri.host_C#| 具有示例的Uri.Equality()运算符
- 两万字详细爬虫知识储备,数据采集与清洗基础习题(一)头歌参考答案
- 对象序列化(六):应用实例-程序退出时保存状态
- 10亿数据量只需要100MB内存,redis的位存储为什么这么牛?
- python 批量打印PDF(转)
- joy数据向量化处理
- 笔记(一)Home Assistant简介
- 有趣的深度学习——使用 BERT 实现一个古体诗生成器
- Windows 10正式版官方原版ISO镜像下载
- SayAsYouWish:Fine-grained Control of Image Caption Generation with Abstract Scene Graphs ---- 论文阅读笔记
- c语言文件压缩怎么求压缩比,文件压缩C语言程序设计报告.doc
- 集火全屋智能“后装市场”,真正玩得转的没几个
- 电子变压器的设计工艺重不重要?
- 《瓦尔登湖》中的“访客”篇中一首小诗与刘禹锡的《陋室铭》
- Nginx使用及配置