Boston Linux & Unix (BLU) Home | Calendar | Mail Lists | List Archives | Desktop SIG | Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings
Linux Cafe | Meeting Notes | Blog | Linux Links | Bling | About BLU

BLU Discuss list archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

thorny script argument escaping problem



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?





BLU is a member of BostonUserGroups
BLU is a member of BostonUserGroups
We also thank MIT for the use of their facilities.

Valid HTML 4.01! Valid CSS!



Boston Linux & Unix / webmaster@blu.org