tags:

views:

92

answers:

2

Hi there, I am currently working on a little backup script from some firebird databases and I've come up with a weird escaping problem that I don't seem to be able to solve. Here's the thing in my script I create a variable called sqllog in which I would like to put the output of a chain of commands, here it is.

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

if I try to execute this in shell I get the following error

Statement failed, SQLCODE = -204

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

Table unknown RDB means it didn't take my try to escape the $.

thx for any help :)

+1  A: 

try with

sqllog=`echo 'SELECT * FROM RDB\$DATABASE;' | isql -u SYSDBA -pass mypasswd localhost:mydatabase | tail -n 2 | head -n 1 | wc -l`
mathk
awesome that work I just replaced the " quotes with ' quotes :) thx for everyone helping me :)
latz
A: 

The line :

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

will set sql to

SELECT * FROM RDB$DATABASE;

I suppose that it is what you want i.e. that the isql command will interpret the $DATABASE variable.

(If not and DATABASE is a shell variable, then you just have to use sql=$(echo "SELECT * FROM RDB$DATABASE;")

What did isql expect ? Give me more details ...

neuro