thorny script argument escaping problem
Robert La Ferla
robertlaferla at comcast.net
Tue Jun 20 22:51:15 EDT 2006
I have a wrapper script written in Ruby (this shouldn't matter - it
could be PERL). This script passes all command-line arguments to a
Java program for processing. The wrapper script should pass all
arguments "verbatim" to the Java program.
Here's the script:
#!/usr/bin/ruby -w
cmd = "java MyClass" + " "
ARGV.each { |arg| cmd.concat arg+' ' }
system(cmd)
The problem is that some arguments take a quoted string like:
mywrapper --description "This is a test."
The shell is unescaping the arguments so when it calls my Java
application, it gets:
java MyClass --description This is a test.
Needless to say, this doesn't work. Furthermore, I cannot require
the user to double escape either. e.g. mywrapper --description
"'This is a test'". I also need this wrapper to work for other
programs which may have quite complicated options. Therefore, it
should work generically.
Am I missing something obvious? Suggestions?
More information about the Discuss
mailing list