已复制
全屏展示
复制代码

bash EOF的几种用法


· 1 min read

一. 在文本中执行命令

替换字符串中的环境变量、执行 $() 、执行命令``


[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

文章推荐