2014-10-08 47 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 

,過程工作就像一個魅力。

感謝所有幫助的人。