| Home
 | Calendar
 | Mail Lists
 | List Archives
 | Desktop SIG
 | Hardware Hacking SIG
 Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings Linux Cafe | Meeting Notes | Linux Links | About BLU  | 
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?