Fixing bash script bogosity - help?
Martin Langhoff
martin.langhoff at gmail.com
Mon Apr 27 16:37:47 EDT 2009
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.langhoff at gmail.com
martin at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ejabberdctl
Type: application/octet-stream
Size: 5226 bytes
Desc: not available
URL: <http://lists.laptop.org/pipermail/devel/attachments/20090427/85950605/attachment.obj>
More information about the Devel
mailing list