2013-06-24 100 views
0

我得在這我想執行SQL bash腳本的問題。
作爲一個例子,如果我只是寫:如何在bash腳本中的循環中執行SQL?

sqlplus -s << EOF
${USER}/${PASSWD}@DataBase
show user;
exit;

它的工作原理。
但只要我把它變成一個循環就不再工作了。
例如:

while (condition) 
do 
    echo $ANSWER   
    read -p '[y/n]' ANSWER 
    echo $ANSWER 
    if [ $ANSWER = 'y' ] 
    then 
     sqlplus -s << EOF 
     ${USER}/${PASSWD}@DataBase 
     show user; 
     exit; 
     EOF 
     break 
    elif [ $ANSWER = 'n' ] 
    then 
     break 
    fi 
done 
echo $ANSWER 

而且我已經得到的結果是:第26行:語法錯誤:文件
(知道行「回聲$回答」是該行25意外結束... )

如果任何人有關於它爲什麼不希望我的工作將是幫助真的很感謝的想法!

+1

這引出了一個問題,什麼是你真正想要在數據庫中呢?這肯定是一種更有效的方式來提取數據。 –

回答

0

你的問題是,殼預計,在該行的開頭這裏文件的分隔符。 你EOF是在該行的中間,因此它不再被認爲是一個分隔符。

這按預期工作:

while (true) 
do 
    echo $ANSWER   
    read -p '[y/n]' ANSWER 
    echo $ANSWER 
    if [ $ANSWER = 'y' ] 
    then 
     sqlplus -s << EOF 
     ${USER}/${PASSWD}@DataBase 
     show user; 
     exit; 
EOF 
     break 
    elif [ $ANSWER = 'n' ] 
    then 
     break 
    fi 
done 
echo $ANSWER 
+0

非常感謝你!事實上,它現在起作用 – oz380