shell中 << EOF 和 EOF 使用

转载请注明出处:

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环境。

相关推荐
charlie1145141911 分钟前
嵌入式Linux驱动开发(4)——内核打印详解
linux·驱动开发·imx6ull
俺爱吃萝卜2 分钟前
开源贡献指南:如何给Apache或Linux内核提PR?
linux·开源·apache
handler0114 分钟前
Linux: 基本指令知识点(3)
linux·服务器·c语言·开发语言·c++·笔记
wuminyu17 分钟前
专家视角看Java线程生命周期与上下文切换的本质
java·linux·c语言·jvm·c++
handler0144 分钟前
Linux 基本指令知识点(1)
linux·c++·笔记
历程里程碑1 小时前
55 Linux epoll高效IO实战指南
java·linux·服务器·开发语言·前端·javascript·c++
用什么都重名1 小时前
Ubuntu 24.04 开机无法进入图形界面:GDM 报「no session desktop files」的排查与修复
linux·运维·ubuntu
实心儿儿1 小时前
C++ —— 进程控制 - 进程程序替换
linux·运维·服务器
Felven1 小时前
盛科CTC8096 40G交换芯片常用命令
linux·40g·ctc8096·交换芯片
SilentSamsara1 小时前
Service 与 Ingress:从 ClusterIP 到云厂商 ALB 的完整流量路径
linux·运维·服务器·微服务·kubernetes·k8s·运维开发