【shell】EOF的使用

在shell编程中,”EOF“通常与”<<“结合使用,“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“,再次返回到主调shell,可将其理解为分界符(delimiter)。既然是分界符,那么形式自然不是固定的,这里可以将”EOF“可以进行自定义,但是前后的”EOF“必须成对出现且不能和shell命令冲突。其使用形式如下:
交互式程序(命令)<<EOF
command1
command2

EOF

1)例如登录Mysql并查询数据库脚本test.sh
mysql -u root -phehe123 << EOF
use mysql;
select user,host from user;
EOF
[root@vincent tmp]# ./test.sh 
user    host
root    %
root    127.0.0.1
    localhost
ids    localhost
root    localhost
    vincent
root    vincent

2)特殊用法:
: << COMMENTBLOCK
   shell脚本代码段
COMMENTBLOCK
用来注释整段脚本代码。 : 是shell中的空语句。
echo start
:<<COMMENTBLOCK
echo
echo "this is a test"
echo
COMMENTBLOCK
echo end
这段脚本执行时,中间部分不会被执行:
[root@newserver shell]# sh eof.sh
start
end

3)cat和eof结合使用具有追加功能
cat >> file.txt << EOF
123
456
EOF
[root@vincent tmp]# cat file.txt 
123
456