2014-10-08 86 views
0

我在Ubuntu系统上遇到了bash脚本的问题。我需要编写一个连接到oracle的脚本,将一些查询翻译成文本文件。运行脚本时退出oracle用户会话

几乎所有这些任务都已完成,但脚本并未按原样运行。

要生成到Oracle我用我的剧本里以下线路连接:

su oracle 
export ORACLE_SID=DB_SID 
export ORACLE_HOME=[ORACLE_PATH] 
export TWO_TASK=[HOSTNAME:PORT] 
export PATH=$ORACLE_HOME/bin:$PATH 
sqlplus -s usr/pass << EOF 

在后续行我做了数据,最后从SQLPLUS我用下面的行退出所有后台:

quit; 

从sqlplus中

exit 

diconnect要从su oracle会话中退出

EOF 

而且在EOF标签之后,我放了一些其他要执行的命令。

问题是,当我运行我的脚本:

user# sh MyScript.sh 

而不是做所有的任务,脚本只执行行至< < EOF和回报的角度给我的终端的控制仍然以oracle用户身份登录。

[email protected]# 

如果我输入'exit'并按回车,脚本的其余部分就会执行。

我需要脚本执行从开始到结束没有这个中间步骤,但我不知道如何。

在此先感谢。

+0

尝试交换您的'exit'和'EOF'。你希望''EOF'和'EOF'之间的所有内容都是SQLPlus的命令,但是exit是一个shell命令。 – 2014-10-08 22:06:26

+0

忘记提到这MAtthew当我交换这些行然后它要求我的su密码,当输入密码我有工作它说它不是正确的密码,然后只执行EOF点之间的代码。 – Cabrakan 2014-10-08 22:20:25

+0

在shell中,'su oracle'是否正常工作(即不在脚本中)? – 2014-10-09 08:20:40

回答

0

在它不是neccesary使用[ス神谕]使环境变量的出口端,以便只是删除行:

su oracle 

,过程工作就像一个魅力。

感谢所有帮助的人。