2011-09-04 2 views
2

나는 bash 쉘 스크립트 변수에 mysql 쿼리의 결과를 얻는 방법을 알아 내는데 어려움을 겪고있다.mysql 커맨드 라인 쿼리 결과를 bash 스크립트 변수에 넣기

testDBName="some_database_name" 
mysqlUser="root" 
mysqlPassword="password" 
mysqlCmd="/Applications/MAMP/Library/bin/mysql -u $mysqlUser -p $mysqlPassword -B -N" 
cmdRes=$($mysqlCmd -e 'SHOW DATABASES LIKE "$testDBName"') #THIS IS THE TROUBLESOME LINE 
if [ "$cmdRes" = "" ]; then 
    echo "Table does not exist" 
else 
    echo "Table already exists" 
fi 

내게 문제가되는 줄은 "cmdRes = ..."입니다. 나는 단지 하드 코드는 다음과 같이 잘 작동하는지에 테이블 이름 경우 :

cmdRes=$($mysqlCmd -e 'SHOW DATABASES LIKE "some_database_name"') 

하지만 주위에 내 머리를 정리 할 수없는 방법/이유/내가 그 일 안에 $ 변수가있는 경우에 무슨 일이 일어나고 있는지. 비슷하지만 다른 여러 가지 질문에 대한 답변을 바탕으로 인용구를 줄이기 위해 문자열의 다른 부분을 여러 변수에 넣어 보았습니다. 작은 따옴표, 큰 따옴표, 백 슬래시, 이중 단일 문자, 이중 따옴표, 중괄호, 실행 eval 등 -하지만 아무 것도 작동하지 않습니다.

도움을 주셔서 감사합니다.

답변

5

문제는 셸이 작은 따옴표 (') 안에 아무 것도 확장하지 않는다는 것입니다.

한 가지 가능한 솔루션 :

cmdRes=$($mysqlCmd -e "SHOW DATABASES LIKE '$testDBName'") 
+0

아니, 내가 얻을 : ERROR 라인 1에서 알 수없는 명령을 '\' '. –

+1

잠깐, 방금 백 슬래시가 없으면 그것을 시도하고 작동합니다! 답을 편집하면 나는 그것을 정확하게 표시 할 것입니다 (나는 편집 권을 가지고 있지 않습니다). 감사! –

관련 문제