3

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 :)

Dennis Williamson
  • 303,596
  • 86
  • 357
  • 418
flazzarini
  • 6,403
  • 4
  • 29
  • 30

2 Answers2

4

try with

sqllog=`echo 'SELECT * FROM RDB\$DATABASE;' | isql -u SYSDBA -pass mypasswd localhost:mydatabase | tail -n 2 | head -n 1 | wc -l`
mathk
  • 7,353
  • 6
  • 41
  • 70
0

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
  • 13,707
  • 3
  • 31
  • 57