2010-06-02 5 views
3

Je travaille actuellement sur un petit script de sauvegarde de certaines bases de données Firebird et j'ai trouvé un étrange problème d'échappement que je ne semble pas être capable de résoudre. Voici la chose dans mon script que je crée une variable appelée sqllog dans laquelle je voudrais mettre la sortie d'une chaîne de commandes, la voici.Echappement d'un problème dans bash en utilisant isql

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

si je tente d'exécuter ce shell dans je reçois l'erreur suivante

Statement failed, SQLCODE = -204 

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

Tableau RDB inconnu signifie qu'il n'a pas pris mon essayer d'échapper à la $.

thx pour toute aide :)

+0

en fait les signes '' sont arround la déclaration – flazzarini

+0

utilisez $() au lieu de '' – neuro

+0

N'oubliez pas de marquer une réponse acceptée –

Répondre

4

essayer avec

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

génial que le travail que je viens de remplacer les "citations avec 'citations :) thx pour tout le monde m'aider :) – flazzarini

0

La ligne:

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

sera mis à sql

SELECT * FROM RDB$DATABASE; 

Je suppose que c'est ce que vous voulez dire que la commande isql w mal interpréter la variable $DATABASE.

(Dans le cas contraire et base de données est une variable de shell, il vous suffit d'utiliser sql=$(echo "SELECT * FROM RDB$DATABASE;")

Que ne isql attendre? Donnez-moi plus de détails ...

Questions connexes