shell实战(二)cat EOF 追加与覆盖文件

每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。

放弃不难,但坚持很酷~

一、前言

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

二、举例

创建checkServer.sh

# keepalived_conf
keepalived_conf=/etc/keepalived
host2=10.6.6.72

    cat > ${keepalived_conf}/xmha/checkServer.sh << EOF
#!/bin/bash
status=\`cat ${keepalived_conf}/xmha/keepalived_status\`
if [ \$status == "master" ];then
        ps -ef | grep ambari-server | grep -v grep >> /dev/null 2>&1
        if [ \$? -ne 0 ];then
                sh /etc/keepalived/xmha/checkFile.sh
                echo "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 grep
                if [ \$? -eq 0 ];then
                        # 如果keepalived服务未成功停止,则手动kill
                        ps -ef | grep /opt/gvmysql/keepalived/sbin/keepalived | grep -v grep | awk  '{print \$2}' | xargs kill -9
                fi
        fi
elif [ \$status == "backup" ];then
        ps -ef | grep ambari-server | grep -v grep >> /dev/null 2>&1
        if [ \$? -eq 0 ];then
                ps -ef | grep ambari-server | grep -v grep | awk  '{print \$2}' | xargs kill -9
        fi
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的时候注意结合转义符的使用。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

create17

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值