Hi all,

I have a simple shell scripting problem :-) you'll find attached a
shell script that ships with ejabberd. It is a fairly straightforward
bit of code, and allows us to control bits of the ejabberd internals
with a nice cli interface. (Feel free to skip the start / stop bits of
the code, I'm fighting with the ctrl function.)

The problem it has is that the parameters are passed to a bash or
runas invocation -- at which point the quoting is a mess. Currently I
am working around it in the caller by doing some stupid
nested-quoting. But this should be easy to cure -- if anyone knows a
bit more bash (or portable shell!) than me :-)

A minimal exposition of the problem is as follows:

$ cat sample.sh
#!/bin/bash -x

# in the script, the CMD is built up as a string
CMD="touch $@"
# in practice we somtimes use /sbin/runuser -c
# and other times plain bash -c
bash -c "$CMD"

# this invokation does the wrong thing -
$ ./sample.sh ./sample.sh "this is file one" "this is file two"
# the ugly workaround is
./sample.sh "'this is file one'" "'this is file two'"

Any hints that don't involve a rewrite?

cheers,



martin-who's-easily-stumped-with-shell-backwardnesss
-- 
 martin.langh...@gmail.com
 mar...@laptop.org -- School Server Architect
 - ask interesting questions
 - don't get distracted with shiny stuff  - working code first
 - http://wiki.laptop.org/go/User:Martinlanghoff

Attachment: ejabberdctl
Description: Binary data

_______________________________________________
Devel mailing list
Devel@lists.laptop.org
http://lists.laptop.org/listinfo/devel

Reply via email to