一、EOF的用法

EOF是(END Of File)的缩写,表示自定义终止符。既然自定义,那么EOF就不是固定的,可以随意设置别名,在linux按ctrl-d就代表EOF。

EOF一般会配合cat能够多行文本输出。

其用法如下:

<<EOF        #开始

....                  #输入内容

EOF            #结束

还可以自定义,比如自定义:

<<ABC        #开始

....

ABC              #结束

通过cat配合重定向能够生成文件并追加操作,在它之前先熟悉几个特殊符号

<:输入重定向

>:输出重定向

>>:输出重定向,进行追加,不会覆盖之前内容

<<:标准输入来自命令行的一对分隔号的中间内容

例子1:

[root@ren5 ~]# cat <<EOF

> hello

> EOF

hello

我们知道cat的操作对象是文件,但是例1中cat的操作对象不是文件,而是用户输入;那么我们可以这样理解例1:先在文件file中输入“Hello”,再用cat file输出其中的内容。

也就是说我们可以用一个文件来替代"<< EOF EOF"。

反过来说,如果操作命令中的文件是输入对象,也可以用"<< EOF EOF"来替代的。

例子2:

[root@ren5 ~]# cat 1.txt

abc

[root@ren5 ~]# cat <<EOF > 1.txt             #向文件1.txt输入覆盖内容(也可以:cat > 1.txt <<EOF)

> 123

> 456

> 678

> LOL

> EOF

[root@ren5 ~]# cat 1.txt

123

456

678

LOL

“<< EOF EOF”的作用是在命令执行过程中用户自定义输入,它类似于起到一个临时文件的作用,只是比使用文件更方便灵活。

二、cat <<EOF 与 cat <<-EOF 的区别

两个都是获取stdin,并在EOF处结束stdin,输出stdout。

在我们使用cat <<EOF时,我们输入完成后,需要在一个新的一行输入EOF结束stdin的输入。EOF必须顶行写,前面不能用制表符或者空格。

如果重定向的操作符是<<-,那么分界符(EOF)所在行的开头部分的制表符(Tab)都将被去除。这可以解决由于脚本中的自然缩进产生的制表符。

例子1

[root@ren5 ~]# cat 2.sh

#!/bin/bash

cat <<EOF

你好,EOF!

EOF

[root@ren5 ~]# sh 2.sh

你好,EOF!

[root@ren5 ~]# sh 2.sh

2.sh:行4: 警告:立即文档在第 2 行被文件结束符分隔 (需要 `EOF')

你好,EOF!

EOF

如果结束分解符EOF前有制表符或者空格,则EOF不会被当做结束分界符,只会继续被当做stdin来输入。

例子2

[root@ren5 ~]# cat 2.sh

#!/bin/bash

cat <<-EOF

你好,EOF!

EOF

[root@ren5 ~]# sh 2.sh

你好,EOF!

虽然最后的EOF前面有多个制表符和空格,但仍然会被当做结束分界符,表示stdin的结束。

转载于:https://www.cnblogs.com/renyz/p/11373525.html

shell基础之EOF的用法相关推荐

  1. shell中的EOF用法

    1.EOF Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell. 可以把EOF替换成其他东西,意思是把内容 ...

  2. shell基础---exit用法

    shell基础篇---exit用法 exit:退出脚本 exit # (#可以使用0至255,0表示正确,其他表示不同的错误) 如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码即为脚本 ...

  3. SHELL/SSH基础知识(入门篇)-包含 shell 脚本语言的基本用法、 shell 脚本语言的基本用法、流程控制、函数 function、其它脚本相关工具、数组 array(欢迎留言交流)

    目录 1 shell 脚本语言的基本用法 1.1 shell 脚本注释规范 1.1.1 shell 脚本注释规范 1.1.2 执行(5种) 1.1.3 在远程主机运行本地脚本 1.1.4 检查shel ...

  4. centos shell基础 alias 变量单引号 双引号 history 错误重定向 21 jobs 环境变量 .bash_history source配置文件 nohup ...

    centos shell基础知识 alias  变量单引号 双引号   history 错误重定向 2>&1  jobs  环境变量 .bash_history  source配置文件 ...

  5. Shell基础练习70脚本

    目录 1.echo 基本脚本 2.printf基础脚本 3.read基础脚本 4.输入输出重定向基础脚本 5.引号的使用 6.变量赋值 7.位置与环境变量 8.grep基本脚本 9.运算脚本 10.条 ...

  6. linux中EOF的用法梳理

    2019独角兽企业重金招聘Python工程师标准>>> linux中EOF的用法梳理 在linux运维工作中,我们会碰到这样一个场景: 执行脚本的时候,需要往一个文件里自动输入N行内 ...

  7. Shell基础(一):Shell基础应用、简单Shell脚本的设计、使用Shell变量、变量的扩展应用...

    一.Shell基础应用 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 切换用户的Shell环境        2> 练习命令历史.命令别名        ...

  8. Linux shell篇---之一--shell基础

    一.shell基础 1.shell的基本概念 shell就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具. 用户界面shell(还有其他用户界面如kde等图形界面)-->内核--& ...

  9. 【图文教程】Shell基础知识

    Shell基础知识 1. shell介绍 2. history命令 history主要参数示例: 3. 命令补全和别名 4. 通配符 5. 输入输出重定向 6. 管道符和作业控制 管道符: 作业控制: ...

  10. 3000字扫盲shell基础知识(新手必备)

    目录 shell基础语法之变量 shell 变量命名 shell 变量调用 shell 变量分类 shell 运算符 运算符种类 关系运算符 布尔运算符 字符串运算符 逻辑运算符 文件测试运算符 sh ...

最新文章

  1. 串口的偶校验位设置_详解UART串口
  2. Isolation Forest原理总结
  3. amd同步多线程_使用方法及感受_AMD Ryzen Threadripper 1950X_CPUCPU评测-中关村在线
  4. 打造更好用的 EF 自动审计
  5. java forkjoin MySQL_Java并发fork-join框架
  6. php登录 cookie,使用cookie进行简单的PHP登录
  7. 使用 anacoda 安装scrapy
  8. Raspberry Pi 构建一个飞机观察器
  9. vue element 调用后台下载文件
  10. 动态瑜伽 静态瑜伽 初学者_使用计算机视觉对瑜伽姿势进行评分
  11. CV领域的实验室及研究组
  12. Http 资源服务器 搭建 HFS
  13. 打发时间的网站,收藏起来吃鸡玩腻了玩玩这些,够你玩一年
  14. web版的在线绘图工具
  15. 如何将一个HTML页面嵌套在另一个页面中
  16. useing eclipse formatting
  17. 从0开始学习 GitHub 系列之「01.初识 GitHub」----转载自stormzhang 原创文章
  18. 微信小程序与内嵌网页交互实现支付功能
  19. 请问nj文件如何用html的解析,nj.renderH
  20. 中国网络伪黑客现象初探

热门文章

  1. 449A - Jzzhu and Chocolate 贪心
  2. Acrobat Pro DC 教程,如何将 PDF 导出为 Microsoft Office 格式?
  3. 如何在Mac中安装使用 Photoshop Elements?
  4. Mac电脑如何设置触控栏显示APP控制?
  5. 用于微服务和ML解决方案管道的消息队列(Kafka和Zookeeper)
  6. 公共技术点之 Android 动画基础
  7. Java经典设计模式 总览
  8. 非对称加密提交表单到PHP
  9. EntityFramework之DetectChanges's Secrets(三)(我为EF正名)
  10. UIAlertView 弹框