shell中<<结合EOF说明:
Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。
可以把EOF替换成其他字符,意思是把内容当作标准输入传给程序。
当shell看到<<的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。这个分界符可以是你所定义的任何字符串。
当存在报错:
-bash: line 6: warning: here-document at line 2 delimited by end-of-file (wanted `EOF’)
注意检查以下事项:
1.存在EOF的项都要顶格编写
2.<<和EOF之间不能有空格
3.EOF左右不能有空格
4.如果存在多个需要分界,可以使用EOF1和EOF2……
oracle启停脚本示例:
PS:以下两个脚本都是在root用户下执行的脚本,因为root切换到oracle用户下不需要输入密码。
#启动oracle(先启动监听,然后启动数据库服务)
su - oracle <<EOF1
lsnrctl start
sqlplus <<EOF2
sys as sysdba
startup;
quit;
EOF2
EOF1
exit 0
#停止oracle(先停数据库服务,然后停止监听)
su - oracle <<EOF1
sqlplus <<EOF2
sys as sysdba
shutdown immediate
quit
EOF2
lsnrctl stop
EOF1
exit 0