Bash?EOF的使用小结

 更新时间:2023年01月12日 10:40:31   作者:ghostwritten  
本文主要介绍了Bash?EOF的使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

EOF适用场景:

  • 命令行多行输出
  • 脚本包装
  • 类型配置文件

1. 命令行输出

$ cat << EOF
> Hello
> EOF
Hello

2. 写入文本

cat << EOF >1.txt
111
222
333
EOF

复制终端是这样的。

cat << EOF >1.txt
> 111
> 222
> 333
> EOF

回车后

$ cat 1.txt
111
222
333

3. 追加文本

cat << EOF >> 1.txt
444
555
666
EOF

查看1.txt内容

$ cat 1.txt
111
222
333
444
555
666

4. 覆盖文本

cat << EOF >1.txt
aaa
bbb
ccc
EOF

查看

$ cat 1.txt
aaa
bbb
ccc

5. 自定义 EOF

cat << a > 1.txt
111
222
333
a

输出:

$ cat 1.txt
111
222
333

6. 另一种格式

  • cat > filename <<EOF
  • cat << EOF > filename
cat > 1.txt <<EOF
123
456
789
EOF

查看

$ cat 1.txt
123
456
789

追加内容

cat >> 1.txt <<EOF
abc
def
ghi
EOF

查看内容

$ cat 1.txt
123
456
789
abc
def
ghi

7. 示例

7.1 配置文件

或者cat << EOF > /usr/local/mysql/my.cnf

cat > /usr/local/mysql/my.cnf << EOF ? ? ? ??
[client]
port = 3306
socket = /usr/local/mysql/var/mysql.sock

[mysqld]
port = 3306
socket = /usr/local/mysql/var/mysql.sock

basedir = /usr/local/mysql/
datadir = /data/mysql/data
pid-file = /data/mysql/data/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1
sync_binlog=1
log_bin = mysql-bin

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES?
port = 3306
EOF

7.2 新建分区并挂载

$ cat auto_add_disk.sh ? ? ? ??
#!/bin/bash
fdisk ?/dev/sdb ?<<EOF
n
p
1
?
?
wq
EOF
?
/sbin/mkfs .ext4 ?/dev/sdb1 ?&& ? /bin/mkdir ?-p ?/data ?&& ?/bin/mount ?/dev/sdb1 ?/data
echo ?'LABEL=data_disk /data ext4 defaults 0 2' ?>> ?/etc/fstab

7.3 设置变量

$ sql=$(cat <<EOF
SELECT foo, bar FROM db
WHERE foo='baz'
EOF
)

$ echo -e "$sql"

7.4 输出脚本

cat <<EOF > print.sh
#!/bin/bash
echo \$PWD
echo $PWD
EOF

查看内容

$ cat print.sh
#!/bin/bash
echo $PWD
echo /home/user

7.5 匹配输出

$ cat <<EOF | grep 'b' | tee b.txt
> foo
> bar
> baz
> EOF
bar
baz

$ cat b.txt
bar
baz

7.6 json 文本

cat >> /etc/docker/daemon.json < EOF
{
? ?"exec-opts": ["native.cgroupdriver=systemd"],
? ?"log-driver": "json-file",
? ?"log-opts": {
? ?"max-size": ?"100m"
? ? },
? ?"registry-mirrors": [
? ? "https://hub-mirror.c.163.com",
? ? "https://mirror.baidubce.com"
? ]
?}
?EOF

查看

$ cat /etc/docker/daemon.json
{
   "exec-opts": ["native.cgroupdriver=systemd"],
   "log-driver": "json-file",
   "log-opts": {
   "max-size":  "100m"
    },
   "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
 }

参考:

How does “cat << EOF” work in bash?

What is Cat EOF in Bash Script?

到此这篇关于Bash EOF的使用小结的文章就介绍到这了,更多相关Bash EOF内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • shell递归输出文件名和目录名的方法

    shell递归输出文件名和目录名的方法

    今天小编就为大家分享一篇shell递归输出文件名和目录名的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Shell执行脚本并输出日志文件的方法

    Shell执行脚本并输出日志文件的方法

    这篇文章主要介绍了Shell执行脚本并输出日志文件的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • shell常用重定向实例讲解

    shell常用重定向实例讲解

    这篇文章主要介绍了shell常用重定向实例讲解,I/O(输入/输出)常用的重定向命令详细介绍,需要的朋友可以参考下
    2014-07-07
  • 浅谈CI脚本异常退出问题定位

    浅谈CI脚本异常退出问题定位

    下面小编就为大家带来一篇浅谈CI脚本异常退出问题定位。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • linux shell实现判断输入的数字是否为合理的浮点数

    linux shell实现判断输入的数字是否为合理的浮点数

    这篇文章主要介绍了linux shell实现判断输入的数字是否为合理的浮点数,需要的朋友可以参考下
    2016-08-08
  • Shell 命令启动Docker Container的实现

    Shell 命令启动Docker Container的实现

    本文主要介绍了Shell 命令启动Docker Container的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • nginx日志切割脚本分享

    nginx日志切割脚本分享

    nginx日志太大怎么办,只有分割一下了,这篇文章就介绍了一下nginx日志切割脚本,需要的朋友可以参考下
    2014-03-03
  • Shell中${}的多种用法小结

    Shell中${}的多种用法小结

    ${}是一种变量替换语法,它用于获取和操作变量的值,本文就来介绍一下${}的多种用法,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Linux?signal()函数的使用学习

    Linux?signal()函数的使用学习

    这篇文章主要为大家介绍了Linux?signal()函数的使用学习及示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 在Linux中重命名文件和目录的几种方法

    在Linux中重命名文件和目录的几种方法

    在这篇基本命令行教程中,你将学习在 Linux 终端重命名文件和目录的各种方法,文中通过代码示例讲解非常详细,对学习Linux重命名文件和目录非常有帮助,需要的朋友跟着小编一起来学习吧
    2024-01-01

最新评论

?


http://www.vxiaotou.com