Chinaunix首页 | 论坛 | 博客

z

  • 博客访问: 33065
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 47
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-22 09:53
个人简介

运维是系统的、复杂的,对技术要求很全面的工程;要先有深度,然后有广度。

文章分类
文章存档

2013年(3)

我的朋友

分类: 系统运维

2013-08-07 15:09:14

      Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主Shell。


      EOF只是一个分界符,其实你完全可以用abcde替换,也一样的功能,只是大家都习惯用EOF来表示。
当s h e l l看到< <的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,
直到s h e l l又看到该分界符(位于单独的一行)。这个分界符可以是你所定义的任何字符串,其实,不一
定要用EOF,只要是“内容段”中没有出现的字符串,都可以用来替代EOF,完全可以换成abcde之类的
字符串,只是一个起始和结束的标志罢了。




command< (内容)
EOF
例如:

su - oracle -c "
export ORACLE_SID=orcl
sqlplus /nolog < connect / as sysdba
startup;
exit;
EOF"
sleep 5
su - oracle -c 
lsnrctl start 
将“内容段”整个作为命令的输入。
上面脚本里就是用su命令读取整段命令,并逐行执行






 
有个特殊用法不得不说:
: << COMMENTBLOCK
   shell脚本代码段
COMMENTBLOCK


这个用来注释整段脚本代码。 : 是shell中的空语句。


echo start
:< echo
echo "this is a test"
echo
COMMENTBLOCK
echo end

这段脚本执行时,中间部分不会被执行:
[root@newserver shell]# sh eof.sh
start
end                                                                                                                                                                          






          
阅读(11454) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~