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

문제는 쉘이 줄의 시작 부분에 here 문서의 구분 기호를 요구한다는 것입니다. 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

관련 문제