bash EOF的几种用法
一. 在文本中执行命令
替换字符串中的环境变量、执行 $() 、执行命令``
[yzy@yzym ~]$ cat > /tmp/test << EOF
whereareyoufrom?
echo $PATH
pwd
`pwd`
ls -l /
$(ls -l /)
EOF
[yzy@yzym ~]$ cat /tmp/test
whereareyoufrom?
echo /usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:...
pwd
/home/work
ls -l /mnt/
total 0
二. 全原样输出到文本
[yzy@yzym ~]$ cat > /tmp/test << \EOF
whereareyoufrom?
echo $PATH
pwd
`pwd`
ls -l /
$(ls -l /)
EOF
[yzy@yzym ~]$ cat /tmp/test
whereareyoufrom?
echo $PATH
pwd
`pwd`
ls -l /
$(ls -l /)
三. 用于注释整段代码
有时注释大段bash代码时可以使用。
[yzy@yzym ~]$ cat test.sh
#!/bin/bash
echo "starting"
:<<EOF
echo "remove mysql backup"
echo "remove postgres backup"
EOF
echo "byebye!"
[yzy@yzym ~]$ bash test.sh
starting
byebye!
四. 需要执行交互命令
比如命令行执行多行SQL语句
[yzy@yzym ~]$ mysql -u root -pflowpp -h127.0.0.1 << 'EOF'
USE cell
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` char(36) NOT NULL,
`age` int(3) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
EOF