一篇博客掌握EOF在shell中的妙用——超容易理解!!!

本文深入解析Shell脚本中EOF的用法与注意事项,通过多个实例展示如何利用EOF进行多行文本输出、文件生成及追加操作,以及如何自定义EOF标记。最后,通过一个综合案例自动安装环境的Shell脚本,展示了EOF在实际应用中的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

在Shell中我们通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。回顾一下< <的用法,当shell看到< <的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。这个分界符可以是你所定义的任何字符串。

一、EOF用法

基本用法:

<<EOF        //开始
....
EOF          //结束

也可以自定义,如:

<<FFF        //开始
....
FFF         //结束

EOF配合cat能够进行多行文本输出。
通过cat配合重定向能够生成文件并追加操作,在它之前先回顾几个特殊符号:

<   :输入重定向
>   :输出重定向
>>  :输出重定向,进行追加,不会覆盖之前内容
<<  :标准输入来自命令行的一对分隔号的中间内容

二、 EOF注意事项

注意:
第一个EOF必须以重定向字符<<开始,第二个EOF必须顶格写,否则会报错。(在下面的内容我会详细说明)

三、EOF 使用实例

3.1、实例1

[root@localhost ~]# cat <<EOF   //运行后会出现输入提示符">"
> Hello
> wolrd
> EOF
输入结束后,在终端显示以下内容:
Hello
wolrd

3.2、实例2

  • 第一个EOF必须以重定向字符<<开始,第二个EOF必须顶格写,否则会报错
[root@localhost d]# cat >> a.txt << EOF
> abc
> abc
> cabc
> EOF
[root@localhost d]# cat b.txt 
abc
abc
abc

3.4、实例4

  • 覆盖文件a.txt的内容
[root@localhost d]# cat > a.txt <<EOF
> aaa
> bbb
> ccc
> EOF
[root@localhost d]# cat a.txt 
aaa
bbb
ccc

3.5、实例5

  • 向文件a.txt追加内容
[root@localhost d]# cat >> a.txt <<EOF
> 123
> 456
> EOF
[root@localhost d]# cat a.txt 
aaa
bbb
ccc
ddd
123
456

3.6、 实例6

  • 自定义EOF名
[root@localhost d]# cat > a.txt <<AAA
> 123
> 456
> 789
> AAA
[root@localhost d]# cat a.txt 
123
456
789

3.7、实例7

  • 通过 read 命令接收输入并打印,输入的值是两个 EOF 标记
    之间的部分,i作为变量值
[root@localhost d]# read i << EOF
> hello
> world
> EOF
[root@localhost d]# echo "$i"
hello
world

四、综合案例

自动安装环境shell脚本

#!/bin/bash
#This is my first Shell-Script                             ##这是我的第一个Shell脚本
systemctl stop firewalld                                   ##关闭防火墙
systemctl disable firewalld                                ##开机自动关闭防火墙
echo "防火墙关闭和防火墙开机关闭"
mount /dev/cdrom /mnt                                      ##对光盘进行临时挂在一下
echo "临时挂载完成"
echo /dev/cdrom /mnt iso9660 defaults 0 0 >> /etc/fstab    ##临时挂在看一下 iso9660类型
echo "永久挂载完成"
sed -i "s/enforcing/disabled/g" /etc/selinux/config        ##关闭核心防护
echo "关闭核心防护"
###这边下面就是搭建YUM本地源
rm -rf /etc/yum.repos.d/*.repo    
cat >> /etc/yum.repos.d/local.repo <<EOF                   ##这边我们就用到了上面 EOF 的方法
[centos]
name=CentOS
baseurl=file:///mnt
enabled=0
gpgcheck=1
EOF
if [ $? = 0 ]
  then
    echo "本地yum仓库安装成功"
   else
    echo "本地yum仓库安装失败"
fi
echo "现在开始进行编译安装httpd"
yum -y install httpd
systemctl start httpd
echo "httpd安装成功并开启"
init 6
##打完收工,重启虚拟机

到现在我们的 EOF 就学的差不多了,这篇 EOF 写的大家应该都可以看得懂,如果不懂请在底下评论,我会及时回复的!
大家可以多敲一敲,会有利于学习的!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值