Shell程序编写open_source_unix_science

Linux Shell中EOF的妙用

2021-03-16  本文已影响0人  刘小白DOER

    笔者最近遇到几起在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!"

上一篇下一篇

猜你喜欢

热点阅读