转载请注明出处:

  EOF(End of File)在Shell中通常用于指示输入的结束,并在脚本或命令中进行多行输入。它允许用户指定一个特定的分界符来表示输入的结束,通常用于创建临时文件、重定向输入或在脚本中提供多行输入。

  EOF允许用户指定一个特定标记,在其之后输入的所有文本都被当作输入,直到再次看到该标记为止。这使得在Shell中进行多行输入变得简单且直观。

使用方法

  在shell中,EOF通常与Here文档结合使用。Here文档是一种将多行输入传递给命令或脚本的方法,而EOF则用于指示输入的结束。

  下面是EOF的一些使用场景及示例说明:

1.重定向输入到命令

cat << EOF
This is a multi-line input
Using EOF in shell
to indicate the end of input
EOF

  这里,cat命令将读取Here文档中的多行输入,直到遇到EOF为止。

2.在脚本中使用EOF

#!/bin/bash
echo "Starting the script"
# Commands here
cat << EOF
This is a multi-line input
Within a shell script
EOF
# More commands
echo "Script finished"

  在这个例子中,EOF用于在脚本中提供多行输入。

3.创建临时文件

cat > file.txt << EOF
This is the content of the file
It spans multiple lines
EOF

  这里,cat命令将把Here文档中的内容重定向到file.txt文件中,直到遇到EOF为止。

4.使用多个Linux shell命令行的示例:

cat << EOF
This is a multi-line input
Using multiple shell commands within Here document:
$(ls -l)
$(echo "Hello, world!")
EOF

  在这个示例中,ls -lecho "Hello, world!"是两个不同的Linux shell命令。当Here文档中包含$(...)时,其中的内容会被解释并执行。因此,在此示例中,在Here文档中执行了ls -l以及echo "Hello, world!"这两个命令。

5.shell脚本中使用:

#!/bin/bash

# 远程登录到服务器
ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" root@192.168.118.30 << EOF
# 在远程服务器上执行命令
echo "Hello, World!"
hostname -I ##30环境配置打印
EOF
##40环境配置打印
hostname -I

  这段shell脚本在 40 的服务器节点上执行时,<< EOF 与 EOF 之间的命令执行是 在 前面ssh 的 192.168.118.30 的服务器节点上执行的。如果没有 <<EOF 与 EOF ,那后面的命令解释执行将都在shell脚本运行的40环境。

shell中 << EOF 和 EOF 使用的更多相关文章

  1. linux shell 中的sleep命令

    开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

  2. shell 中的与、或表达式

    今天总结一下linux shell中逻辑关机表达方式.逻辑与的表达: 1).if [ $xxx=a -a $xx=b ] 注:-a表示and的意思 2).if [ $xxx=a ] && ...

  3. shell简单用法笔记(shell中数值运算)二

    shell中变量值,如果不手动指定类型,默认都是字符串类型: 例如: a= b= c=$a+#b echo $c 结果会输出:123+456 shell中,如果要进行数值运算,可以通过一下方法: 方法 ...

  4. shell中{}的妙用

    shell中${}的妙用   1. 截断功能 ${file#*/}:       拿掉第一条/及其左边的字符串:dir1/dir2/dir3/my.file.txt ${file##*/}:    拿 ...

  5. shell中命令之间数据的传递

    1.管道 "|" ls | cat -n > out.txt 2. 子shell 2.1 子shell 说明 在shell脚本中可以用()操作符可以定义一个子shell #/ ...

  6. shell中&&和||的使用方法

    测试题: [ -z "" ] && echo 0 || echo 1 的结果是多少 看看这两个 && || 的用户  http://blog.csd ...

  7. 任督二脉之Shell中的正则表达式

    VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进. Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyz ...

  8. shell中条件判断if中的-z到-d的意思

    shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 ...

  9. shell中的循环

    shell中的循环 for循环 类似于C语言的步长控制 例如: ;i<=;i++)); ); done 将1到10,依次乘以4,然后打印出来. 这里顺便提一下,shell里面表达式的计算,可以有 ...

  10. shell中&&和||的使用方法_转

    shell中&&和||的使用方法 &&运算符:   command1  && command2   &&左边的命令(命令1)返回真(即返 ...

随机推荐

  1. 【matplotlib基础】--动画

    matplotlib的动画一直是一个强大但使用频率不高的功能,究其原因,一方面展示动画需要一定的媒介,没有图形和文字展示方便:二来大家更关心的是分析结果的最终图表,图表的动态展示则没有那么重要. 不过 ...

  2. 使用Eclipse生成CHM帮助文档(图解)

    使用Eclipse生成CHM帮助文档(图解) 博客分类: System Operate javadoc生成chm文档java生成api帮助文档api帮助文档生成工具 Eclipse JavaDoc和j ...

  3. MySQL PXC集群大事务提交超限

    研发人员在测试大事务提交时遇见了错误: Got error 5 - 'Transaction size exceed set threshold' during COMMIT 测试了几次都是1200S ...

  4. Java-全网最详细反射

    Java-反射 前言 Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象 ...

  5. ELK-日志收集-Kibana WEB安全认证

    1.ELK收集MYSQL日志实战: 日志收集存放目录位置: /usr/local/logstash/config/etc/   1)日志采集-存入redis缓存数据库:mysql-redis.conf ...

  6. P1144 最短路计数 题解

    Problem 考察算法:拓扑排序 + \(DP\) + \(Dijkstra\). 题目简述 给出一个无向无权图,问从顶点 \(1\) 开始,到其他每个点的最短路有几条. 思路 先求出 \(1\) ...

  7. Chromium Canvas工作流

    blink 中实现了2种 canvas,分别是 blink::HTMLCanvasElement 和 blink::OffscreenCanvas ,前者对应 html/dom 中的 canvas,后 ...

  8. JS深入之内存详解,数据结构,存储方式

    理解了本文,就知道深拷贝和浅拷贝的底层,了解赋值的底层原理. 可以结合另一篇文章一起食用:深拷贝与浅拷贝的区别,实现深拷贝的方法介绍. 以下是正文: 栈数据结构 栈的结构就是后进先出(LIFO),如果 ...

  9. 1. JVM内存区块

    本篇文章主要讲解Java(JVM)在运行期间,其运行时数据区域的作用.职责与划分.包括堆内存.栈内存--虚拟机栈.本地方法栈.方法区.常量池.程序计数器等概念. 采集可以使用JavaMXBean(采集 ...

  10. 八个SVN提交的好习惯(转)

    一.提交之前先更新 1.         SVN更新的原则是要随时更新,随时提交.当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交. 2.         如果在修改的期间别人也更改了sv ...