一、前言

之前写shell脚本的时候,有这样一个需求:我需要创建一些文件,并将内容输入到文件中。如果创建一个文件内容模板,然后通过$1$2传参的形式修改某些值,这样做感觉太不方便。后来从网上找了到 cat EOF 的用法,完全符合我的使用场景。

二、举例

# keepalived_conf
keepalived_conf=/etc/keepalived
host2=10.6.6.72cat > ${keepalived_conf}/xmha/checkServer.sh << EOF
#!/bin/bash
status=\`cat ${keepalived_conf}/xmha/keepalived_status\`
if [ \$status == "master" ];thenps -ef | grep ambari-server | grep -v grep >> /dev/null 2>&1if [ \$? -ne 0 ];thensh /etc/keepalived/xmha/checkFile.shecho "backup" > "${keepalived_conf}/xmha/keepalived_status"# 停止keepalived服务,使VIP转移/bin/sudo -u root pkill keepalived# 再次检查keepalived进程,防止停止失败ps -ef | grep /opt/gvmysql/keepalived/sbin/keepalived | grep -v grepif [ \$? -eq 0 ];then# 如果keepalived服务未成功停止,则手动killps -ef | grep /opt/gvmysql/keepalived/sbin/keepalived | grep -v grep | awk  '{print \$2}' | xargs kill -9fifi
elif [ \$status == "backup" ];thenps -ef | grep ambari-server | grep -v grep >> /dev/null 2>&1if [ \$? -eq 0 ];thenps -ef | grep ambari-server | grep -v grep | awk  '{print \$2}' | xargs kill -9fi
fi
sh /etc/keepalived/xmha/check_brain_split.sh
EOF# 远程主机执行cat EOF命令
ssh root@${host2} "cat > ${keepalived_conf}/xmha/checkFile.sh" << EOF
# 代码
EOF

说明

  • 如上述代码所示,将内容批量输入至checkServer.sh文件中。其中没有加转义符 \ 的变量会在脚本中被解释为真实值;加转义符 \ 的变量会将变量的写法原样地输入至目标文本中。
  • 涉及到变量操作,如果需要保留该变量到文件中的话,需要转义符\。否则,shell脚本将会解释这些变量。
  • cat 追加内容用 >>,覆盖内容用 >
  • 远程主机执行 cat EOF 命令,需要使用引号将 cat至文件的部分 括起来,上面已给出示例。

三、小结

虽然文章比较短,但也提供了一种批量输入内容至文件的方法,可以灵活的将变量赋予不同的真实值,挺实用的。使用 cat EOF的时候注意结合转义符的使用。


shell实战(二):cat EOF 追加与覆盖文件相关推荐

  1. cat EOF追加与覆盖

    当需要将多行文件输入到文本时,如果每条都使用echo 到文件时是比较繁琐的,这种情况下可以使用cat EOF进行多行文件的覆盖或追加输入. 一.覆盖 这里有两种格式可以使用 1.格式一 #!/bin/ ...

  2. linux here用法,linux shell的here document用法(cat EOF)

    什么是Here Document? Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下 cmd << delimiter Here Doc ...

  3. linux shell的here document用法(cat EOF)

    什么是Here Document? Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下 cmd << delimiter   Here D ...

  4. 老男孩shell实战读书笔记 (6-10章节)

    老男孩shell教程 (6-10章节) shell脚本的条件测试与比较 在bash编程中,条件测试常用的语法形式如下表: 说明⚠️: 语法1中的test命令和语法2中的[]是等价的. 语法3中的[[] ...

  5. linux cat eof如何指定变量,Linux cat和EOF的使用

    在某些场合,可能我们需要在脚本中生成一个临时文件,然后把该文件作为最终文件放入目录中.(可参考ntop.spec文件)这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判 ...

  6. Linux Shell高级技巧(二)

    七.非直接引用变量: 在Shell中提供了三种为标准(直接)变量赋值的方式:       1. 直接赋值.       2. 存储一个命令的输出.       3. 存储某类型计算的结果.       ...

  7. cat EOF file

    .多行导入文件(新建文件或者覆盖文件内容) cat << EOF > abcd.txt Hello! This is a test file! Test for cat and EO ...

  8. 企业Shell实战-MySQL分库分表备份脚本

    本文来自 http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.ht ...

  9. linux cat EOF 变量自动解析问题

    使用如下shell安装node时,一直提示 command not found wget https://mirrors.huaweicloud.com/nodejs/latest-v8.x/node ...

最新文章

  1. .NET LINQ 筛选数据
  2. python适合多大的人学-学Python编程孩子几岁最合适?
  3. 计算机工程类高级职称,2019年工程类中高级职称都有哪些专业?
  4. [CODEVS 1173] 最优贸易
  5. k3s containerd和docker命令对比表
  6. OpenCV场景重建
  7. mysql 客户服务号_mysql客户端及服务端常用实用工具功能总结
  8. java超市管理系统增删改查,超市管理系统java程序设计报告(图文完整)
  9. UC浏览器去广告、联网、升级(支持新版8.1)
  10. word中域代码与题注的结合实现自动编号和超简便交叉引用
  11. 各版本iphone重要参数
  12. 在树莓派上创建区块链节点
  13. 【wps】wps怎样删除中间的一页?
  14. unity 线渲染器LineRender
  15. java毫秒数_Java中的毫秒数
  16. “计算机无法访问,您可能没有权限使用网络资源”解决方法
  17. python 把图片白色部分变透明_如何将图像区域转换为白色或透明?
  18. 美格智能5G R16模组SRM825N顺利通过国内CCC、SRRC、CTA认证
  19. 酒水商城|基于Springboot实现酒水商城系统
  20. 手机处理器天梯图出炉:第一实至名归,你手机处理器排第几

热门文章

  1. 优化Symbian模拟器(转)
  2. Eviews 8.0&9.0界面新功能介绍
  3. 腾达无线路由器连不上服务器,腾达无线路由器连接不上信号怎么办
  4. 华硕路由器固件 虚拟服务器,华硕路由器开启设置虚拟服务器
  5. css中,用px自动转化为rem
  6. 峭度度量非高斯分布的理论知识
  7. 出生于77年至83年的十大经典
  8. 日期和时间处理(Python实现)
  9. Mycat-eye使用入门教程
  10. win10下samba提示windows无法访问