Linux Shell中EOF的妙用

作者: 刘小白DOER | 来源:发表于2021-03-16 04:56 被阅读0次

        笔者最近遇到几起在Shell中使用EOF来定义一块执行脚本,终于可以大大减少代码量和增强逻辑性,现在将其总结分享出来。Shell中通常将EOF与 << 结合使用,表示后续输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。

        EOF可以替换为你想要任何符号。

        为了方便,笔者在docker容器内完成测试。

        其用法如下:

        <<EOF        

        ....

        EOF            

    1、执行mysql数据库的多指令

    #!/bin/bash

    mysql -hlocalhost -uroot -p123456 <<EOF

    show master status\G;

    #show slave hosts;

    use docker_test;

    select * from cards;

    #exit

    EOF

    测试效果如下:

    2、expect自动交互执行

        详情参考Linux中expect工具完成远程交互通信(1),里面有详细的代码的解释。

    3、cat和eof追加文件

    #!/bin/bash

    cat >> /test.log <<EOF

    abcdef

    hello word !

    12345678

    EOF

    4、追加配置到文件。这是笔者在添加阿里docker加速时发现的。

    sudo tee /etc/docker/daemon.json <<-'EOF'

    {

      "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]

    }

    EOF

      这里存在  <<和<<-的区别问题,有-的话,EOF作为结束符时,前面可以有制表符和空格。同时加了引号,里面内容的表达式不会被解析。

    5、与:结合来注释代码段,:是shell中的空语句

    #!/bin/bash

    echo "hello world!"

    :<<COMMENTBLOCK

    echo "starting"

    echo "this is a pro"

    echo "comment"

    COMMENTBLOCK

    echo "hello world!"

    相关文章

      网友评论

        本文标题:Linux Shell中EOF的妙用

        本文链接:https://www.haomeiwen.com/subject/yuwkcltx.html