shell--EOF、行尾&

1.EOF

在shell编程中,”EOF“通常与”<<“结合使用,

“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“,再次返回到主调shell,

可将其理解为分界符(delimiter)。既然是分界符,那么形式自然不是固定的,这里可以将”EOF“可以进行自定义,但是前后的”EOF“必须成对出现且不能和shell命令冲突。其使用形式如下:

交互式程序(命令)<<EOF
command1
command2
...
EOF
       ”EOF“中间的内容将以标准输入的形式输入到”交互式程序“,当shell看到”<<“知道其后面输入的分界符,当shell再次看到分界符时,两个分界符中间的部分将作为标准输入。
       "EOF"一般常和cat命令连用。
注意,最后的”EOF“必须单独占一行。
 
下面以cat命令为例讲解”EOF“使用。一般有以下两种形式
1.cat<<EOF
2.cat<<EOF>filename或者cat<<EOF>>filename(cat<<EOF>filename或者cat<<EOF>>filename )
其实,第一种形式和第二种形式没有什么本质的区别,第一种形式将内容直接输出到标准输出(屏幕),而第二种形式将标准输出进行重定向,将本应输出到屏幕的内容重定向到文件而已。
 
例1:
#cat<<EOF
>12
>34D
>EOF
12
34D
 
例2:
#cat>>filename<<EOF
>DHA
>23
>EOF
#cat filename
DHA
23
例3:通过脚本启动数据库
cd /home/oracle
source .bash_profile
sqlplus / as sysdba << EOF
shutdown immediate
quit
EOF
sleep 1min
sqlplus / as sysdba << EOF
startup
quit
EOF

2.shell 中行末尾的"&" 的作用

& 代表非阻塞方式执行当前行,如果不加& 则必须等到执行完该指令后才能执行后来的指令。

  

posted @ 2017-06-03 16:19  酸奶加绿茶  阅读(475)  评论(0编辑  收藏  举报