Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。如下:
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
sqlplus $USERID @$OUT_FILE << EOF
exit
EOF
当把这段代码放在Shell中时,会在Shell脚本执行完毕后自动退出SQLPLUS的命令提示符状态。
<
(内容)
EOF
可以把EOF替换成其他东西
意思是把内容当作标准输入传给程序
这里再简要回顾一下< <的用法。当s h e l l看到< <的时候,它就会知道下一个词是一个分界
符。在该分界符以后的内容都被当作输入,直到s h e l l又看到该分界符(位于单独的一行)。这个
分界符可以是你所定义的任何字符串。
----------------------------------------------------------------------------------------------------------
su - oracle -c "sqlplus username/password"<
其中:
su: 切换用户
-: 使用orcale的环境设置
-c: 执行后面的命令
<
当第三行出现EOF的时候,shell认为输入结束;并将输入传递给sqlplus命令
<
不是遇到eof结束,其实是说你开始和结束要匹配这个符号“<<”后面的内容
举例子哈
代码:su - oracle -c "sqlplus username/password" <
此时屏幕显示:sqlplus username/password
然后你输入:user001
user001
代码:abc
----------------------------------------------------------------------------------------------------------
<< EOF 是执行一命令,命令从<
ftp -n << EOF
open $host 21
user $user $password
cd $remote_dir
lcd $local_dir
get $file_name
bye
EOF
<<- EOF 与 << EOF 只有细微的差别(在菜单式命令中每行的开头可以不必顶格),下面这段代码使用<
ftp -n <<- EOF
open $host 21
user $user $password
cd $remote_dir
lcd $local_dir
get $file_name
bye
EOF
EOF并不是唯一的,例如可以这样:
ftp -n <<- !
open $host 21
user $user $password
cd $remote_dir
lcd $local_dir
get $file_name
bye
!
阅读(1433) | 评论(0) | 转发(0) |