2013-06-24 46 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