当EOF中使用到shell变量是 会出现解析问题 解决方案参考:

linux cat EOF 变量自动解析问题  https://blog.csdn.net/whatday/article/details/98579404

在平时的运维工作中,我们经常会碰到这样一个场景:
执行脚本的时候,需要往一个文件里自动输入N行内容。如果是少数的几行内容,还可以用echo追加方式,但如果是很多行,那么单纯用echo追加的方式就显得愚蠢之极了!
这个时候,就可以使用EOF结合cat命令进行行内容的追加了。

下面就对EOF的用法进行梳理:
EOF是END Of File的缩写,表示自定义终止符.既然自定义,那么EOF就不是固定的,可以随意设置别名,在linux按ctrl-d就代表EOF.
EOF一般会配合cat能够多行文本输出.
其用法如下:
<<EOF        //开始
....
EOF            //结束

还可以自定义,比如自定义:
<<BBB        //开始
....
BBB              //结束

通过cat配合重定向能够生成文件并追加操作,在它之前先熟悉几个特殊符号:
< :输入重定向
> :输出重定向
>> :输出重定向,进行追加,不会覆盖之前内容
<< :标准输入来自命令行的一对分隔号的中间内容.

下面通过具体实例来感受下EOF用法的妙处:
1)向文件test.sh里输入内容。
[root@slave-server opt]# cat << EOF >test.sh 
> 123123123
> 3452354345
> asdfasdfs
> EOF
[root@slave-server opt]# cat test.sh 
123123123
3452354345
asdfasdfs

追加内容
[root@slave-server opt]# cat << EOF >>test.sh 
> 7777
> 8888
> EOF
[root@slave-server opt]# cat test.sh 
123123123
3452354345
asdfasdfs
7777
8888

覆盖
[root@slave-server opt]# cat << EOF >test.sh
> 55555
> EOF
[root@slave-server opt]# cat test.sh 
55555

2)自定义EOF,比如自定义为wang
[root@slave-server opt]# cat << wang > haha.txt
> ggggggg
> 4444444
> 6666666
> wang
[root@slave-server opt]# cat haha.txt 
ggggggg
4444444
6666666

3)可以编写脚本,向一个文件输入多行内容
[root@slave-server opt]# touch /usr/local/mysql/my.cnf               //文件不提前创建也行,如果不存在,EOF命令中也会自动创建
[root@slave-server opt]# vim test.sh
#!/bin/bash

cat > /usr/local/mysql/my.cnf << EOF                                      //或者cat << EOF > /usr/local/mysql/my.cnf
[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

[root@slave-server opt]# sh test.sh           //执行上面脚本
[root@slave-server opt]# 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

Linux EOF 输入流相关推荐

  1. linux eof tmp目录,Linux学习-标准输入输出(示例代码)

    标准输入输出重定向--Linux下任何一个命令的执行,他都会经过下图所示的流程: 目录 三种I/O设备 把I/O重定向入文件 tr 使用管道链接命令 实际案例 一.I/O设备Linux提供了三种I/O ...

  2. Linux EOF使用

    # cat << EOF > fileB   用法 例: vi ceshi.sh cat<<eof>file1aaaabbbbccccddddeof 操作图如下: ...

  3. C++中eof(),bad(),fail(),good(),clear()

    1.eof() 输入流状态检测如果读文件到达文件末尾,返回true. 问题: 关于输入流状态函数cin.eof()的问题 int main() {char gc; while(!cin.eof()) ...

  4. linux 股票指南针,linux 基础命令 1

    1       创建目录/data mkdir -p  /data -p  递归创建目录 ,创建多级层目录 2       tree  以树的形状显示目录 -L  1  显示多少层目录 只查看一层目录 ...

  5. LINUX 基础命令 一

    linux 命令格式:命令 [参数] [路径] 1.切换到 / 目录 cd / change directory --> cd 2.查看当前路径 pwd 3.在 / 下创建一个目录:xxx ma ...

  6. linux常用操作命令详解

    将常用的linux操作命令整理下,超全面,超详细,每个命令都有实例,方便以后复习 目录 一.常用系统工作命令 1.echo  用于在终端输出字符串或变量提取后的值 2.date  用于显示及设置系统的 ...

  7. linux入门级知识回顾

    ifdown eth0 #关闭网卡eth0 ifup eth0 #启动网卡eth0 ifconfig #查看网络配置:wq 保持并退出 :q 退出 :q! 强制退出不保存 :wq! 强制退出并保存 e ...

  8. checksum linux 命令_linux常用命令总结

    一.find命令 作用:查找文件 [root@server ~]# find / -name elasticsearch /var/log/elasticsearch /var/run/elastic ...

  9. s5-6 Linux 标准输出 系统优化 目录结构

    标准输出 重定向符号 #>   1>    标准输出重定向  先把文件的内容清空   把内容放在文件的最后一行 #>>  1>>   追加重定向      把内容放 ...

最新文章

  1. k均值聚类算法考试例题_K-均值聚类法实例解析
  2. LIbGDX 示例Tests详解一:AccelerometerTest
  3. 枚举IHTMLDocument2中所有IFRAME的内容
  4. Minetorch教程
  5. linux vi模式替换,linux基础命令之:vi模式下查找和替换
  6. 数据结构——最小生成树之克鲁斯卡尔算法(Kruskal)
  7. 论文浅尝 | 为基于知识库的问答构建形式查询生成
  8. 贪心の纪念品分组(洛谷P1094题题解,Java语言描述)
  9. iOS8开发-Swift编程
  10. Apache Kylin 部署之不完全指南
  11. (48)VHDL实现8位奇偶校验电路(process语句语句)
  12. yum安装Apache Web Server后各个文件存放位置
  13. haar的简单应用(1)
  14. 前后端交互模式大总结 艾提拉 总结 attilax总结 目录 1. 通过ajax ajax就是js的网络api 完全解耦合 推荐 1 1.1. Query Ajax 操作函数 1 1.2. 服务
  15. 需求规格说明书【样本】
  16. 中望cad文字显示问号怎么办_如果CAD工程图显示乱码怎么办?
  17. html5脑图_HTML5制作思维导图
  18. 激荡三十年:银行数据库的发展与变迁
  19. 水木周平戏说中国网络黑幽默
  20. MSP430(CCS工程下)添加printf实现打印功能

热门文章

  1. TiDB 源码阅读系列文章(十九)tikv-client(下)
  2. 大数据WEB工具Hue
  3. 身为程序员,你接过最奇葩的需求是什么?丨Q言Q语
  4. 7.Nginx_Keepalived高可用配置
  5. 基于Selenium2与Python自动化测试环境搭建
  6. Docker1.12.1之swarm集群搭建与使用
  7. C#(Winform)实现条码打印
  8. iSCSI存储技术全攻略
  9. 转:FMS 3.5之Hello World!
  10. Hibernate two table same id