I've been asked to help with some Drupal development. To make it tolerable, I 
drive everything in code so that I can apply some lifecycle management 
principles. Being Drupal, this regularly requires editing the database directly.

I have a bash script which drives Drush to make changes. The important part of 
the script looks  like this:

function run_drush_cmd {
  $DRUSH_BIN --root=${DRUPAL_ROOT} --uri=${SITE_URI} $@
}

run_drush_cmd "sql-query \"delete from ldap_servers where sid='ldap1';\""

This produces an error about messed up quoting in my SQL syntax:

"ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the 
manual that corresponds to your MySQL server version for the right syntax to 
use near '"delete' at line 1"

It works if instead of calling the function I put together the entire Drush 
command on a single line of my script:

$DRUSH_BIN --root=${DRUPAL_ROOT} --uri=${SITE_URI} sql-query "delete from 
ldap_servers where sid='ldap1';"

I have tried a lot of different styles of quoting, but I can't figure out how 
to tell the function to pass the string to the external binary correctly. I am 
obviously not understanding something.

Any thoughts on what bash is doing?

Richard

/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to