Bash EOF 技巧

文章目录

  • Bash EOF 技巧
    • 1. 命令行输出
    • 2. 写入文本
    • 3. 追加文本
    • 4. 覆盖文本
    • 5. 自定义 EOF
    • 6. 另一种格式
    • 7. 示例
      • 7.1 配置文件
      • 7.2 新建分区并挂载
      • 7.3 设置变量
      • 7.4 输出脚本
      • 7.5 匹配输出
      • 7.6 json 文本

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.sockbasedir = /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 = 4Msql_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
1wq
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 技巧相关推荐

  1. 简洁的 Bash Programming 技巧(三)

    这是简洁的 Bash Programming 技巧系列的第三篇文章,这一系列的文章专门介绍 Bash 编程中一些简洁的技巧,帮助大家提高平时 Bash 编程的效率.有兴趣的同学可以回顾下之前的两篇文章 ...

  2. Shell编程:简洁的 Bash Programming 技巧(三)

    这是简洁的 Bash Programming 技巧系列的第三篇文章,这一系列的文章专门介绍Bash编程中一些简洁的技巧,帮助大家提高平时 Bash 编程的效率.有兴趣的同学可以回顾下之前的两篇文章(一 ...

  3. Shell编程:简洁的 Bash Programming 技巧

    简洁的 Bash Programming 技巧这一系列文章专门介绍Bash编程中一些简洁的技巧,帮助大家提供 Bash 编程的效率,目前该系列已经有三篇文章,有兴趣的同学可以继续阅读其它两篇续篇(一) ...

  4. Shell编程:简洁的 Bash Programming 技巧续篇

    简洁的 Bash Programming 技巧系列文章专门介绍Bash编程中一些简洁的技巧,帮助大家提高平时 Bash 编程的效率.继上一篇文章发布后,收到很多读者的反响,所以我决定继续将自己学到的一 ...

  5. Bash 使用技巧大补贴

    Bash 是我们经常与之打交道的 Shell 程序,本文针对其使用技巧进行了搜罗.相信在你看过这些内容之后,定会在 Bash 的世界里游刃有余. 从历史中执行命令 有时候,我们需要在 Bash 中重复 ...

  6. Bash 使用技巧大补贴(转)

    http://linuxtoy.org/archives/the-best-tips-and-tricks-for-bash.html Bash 是我们经常与之打交道的 Shell 程序,本文针对其使 ...

  7. bash使用技巧整理

    说明: 这些技巧主要来自history&read line这两个库,下文中的技巧也适用其它使用该库的应用程序. bash命令可以使用ctrl + alt + e展开,参数使用ctrl x + ...

  8. Bash功能与使用技巧

    Bash功能与使用技巧 目录: 历史命令 命令别名 管道与重定向 常用快捷键 作业控制 花括号扩展 一个完整计算机的体系结构包括:硬件与软件,而软件又分为系统软件与应用软件,负责对硬件仅需管理与操作的 ...

  9. linux中bash的功能主要有,Linux系统中的Bash功能的介绍

    今天小编要跟大家分享的文章是关于Linux系统中的Bash功能的介绍.一个完整计算机的体系结构包括:硬件与软件,而软件又分为系统软件与应用软件,负责对硬件仅需管理与操作的是系统软件的内核部分,用户是无 ...

最新文章

  1. 【作死】更新macOS Mojave后Vagrant无法使用
  2. H3C 多区域MSTP配置
  3. synergy软件ubuntu配置
  4. Windows server 1709(不含UI)模板部署
  5. 音频编码解码器库 libZPlay
  6. 你用好了没?K8 CPU使用指南
  7. codeforces 463C. Gargari and Bishops 解题报告
  8. QObject::connect: Cannot queue arguments of type xxx的解决方案
  9. vacode允许c_使用VS code编译运行C,C++,Java程序
  10. au人声处理_Audacity音频处理
  11. f-stack nginx 多进程模式启动 main_loop 流程分析
  12. Javascript高级程序设计(一)
  13. 【复杂网络】【社区发现】算法Louvain_FastUnfloding
  14. 两个平面的位置关系和判定方程组解_必修二数学课后题答案
  15. 自适应滤波器的FPGA实现
  16. setMinDate出现java.lang.IllegalArgumentException: fromDate:xxx does not preced toDate: xxx异常的简单解决办法
  17. java视频生成缩略图_Java中使用ffmpeg生成视频缩略图
  18. JAVA怎么给扇形加边框_PS怎么制作扇形边框 扇面边框教程
  19. 通达信指标:捕捞季节
  20. 优秀的 GitHub 项目合集

热门文章

  1. 对于纪争光纪老师讲课的感想
  2. 日常JAVA基础面试题集8(含答案)
  3. vue使用lrz进行压缩图片
  4. 【学习分享】2、创龙 TMS320C6748开发板程序加载和烧写(一)
  5. 史上首次商业太空旅游,到底有没有进太空?
  6. android项目中集成融云IM之实现消息提供者来显示群名
  7. mysql查询相关语法总结
  8. 基于趋动云部署秋葉aaaki的Stable Diffusion整合包v4--linux版
  9. latex bib 引用和参考文献的正确使用教程,个人实践记录
  10. 蓝色经典的对联广告代码