2010-06-02 2 views
3

현재 일부 firebird 데이터베이스에서 약간의 백업 스크립트를 작성 중이며 해결할 수없는 이상한 이스케이프 문제가 발생했습니다. 여기 내 스크립트에서 sqllog라는 변수를 생성합니다.이 변수에는 명령 체인의 출력을 넣고 싶습니다. 여기 있습니다. 내가 쉘이 실행하려고하면isql을 사용하여 bash에서 이스케이프 처리 문제

sqllog=`echo "SELECT * FROM RDB\$DATABASE;" | isql -u SYSDBA -pass mypasswd localhost:mydatabase | tail -n 2 | head -n 1 | wc -l` 

나는

Statement failed, SQLCODE = -204 

Dynamic SQL Error 
-SQL error code = -204 
-Table unknown 
-RDB 
-At line 1, column 15. 

표 알 수없는 RDB는이 $ 탈출 할 내 시도를하지 않았 음을 의미합니다 다음과 같은 오류를 얻을.

sql=$(echo "SELECT * FROM RDB\$DATABASE;") 

설정합니다 SQL

SELECT * FROM RDB$DATABASE; 

에 나는 그것이 무엇이라고 생각 :

+0

사실은''징후가 문을 arround 있습니다 – flazzarini

+0

사용 $() 대신'의' – neuro

+0

은 허용 대답을 표시하는 것을 잊지 마십시오. 작업 난 그냥 따옴표 : 모두가 나를 돕는 들으 '와'따옴표를 대체하는 것이 –

답변

4

도움 :)에 대한

들으

sqllog=`echo 'SELECT * FROM RDB\$DATABASE;' | isql -u SYSDBA -pass mypasswd localhost:mydatabase | tail -n 2 | head -n 1 | wc -l` 
+0

멋진 :) – flazzarini

0

라인으로 시도 isql 명령을 사용하면됩니다. 변수 $DATABASE을 잘못 해석합니다. 쉘 변수가되지 않으며 DATABASE 경우, 당신은 그냥 사용할 필요가

( sql=$(echo "SELECT * FROM RDB$DATABASE;")

isql을 무엇을 기대 했는가? 나에게 세부 정보를주고 ...

관련 문제