2

The Beanshell documentation implies that you can run a script using this format on the command line:

java bsh.Interpreter script.bsh [args]

The only problem with this is that I cannot get it to work. I know how to call other scripts with args from a Beanshell script but I cannot get the initial script to take args. Help?

For example, a beanshell script like this one, wont parse the args:

import java.util.*;
for (int i=0; i < args.length; i++) {
  System.out.println("Arg: " + args[i]);
}

Also, this doesn't work either:

import bsh.Interpreter;
for( i : bsh.args )
System.out.println( i );

2 Answers 2

3

The command-line arguments are available under bsh.args, not args. So if you change all instances of args in your code with bsh.args, you should be good to go. Reference: Special Variables and Values.


This worked for me:

for (arg : bsh.args)
    print(arg);

Example:

$ bsh foo.bsh 1 2 3
1
2
3
Sign up to request clarification or add additional context in comments.

1 Comment

Do you know how to dump bsh.args to the screen?
0

Thanks to Chris Jester-Young I wrote a solution for this using Beanshell:

import java.util.*;
//debug();
argsList  = new ArrayList();
optsList = new HashMap();
specialOpts = new ArrayList();
int count = 0; // count the number of program args
for (int i=0; i < bsh.args.length ; i++) {
  switch (bsh.args[i].charAt(0)) {
    case '-':
        if (bsh.args[i].charAt(1) == '-') {
          int len = 0;
          String argstring = bsh.args[i].toString();
          len = argstring.length();
          System.out.println("Add special option " + 
                              argstring.substring(2, len) );
          specialOpts.add(argstring.substring(2, len));
      } else if (bsh.args[i].charAt(1) != '-' && bsh.args[i].length() > 2 ) {
            System.out.println("Found extended option: " + bsh.args[i] +
                                " with parameter " + bsh.args[i+1] );
          optsList.put(bsh.args[i], bsh.args[i+1]);
          i= i+1;
      } else if (bsh.args[i].charAt(1) != '-' && bsh.args[i].length() == 2 ) {
          System.out.println("Found regular option: " + bsh.args[i].charAt(1) + 
                             " with value " + bsh.args[i+1] );
          optsList.put(bsh.args[i], bsh.args[i+1]);
          i= i+1;
      } else if (bsh.args[i].length() <= 1) {
            System.out.println("Improperly formed arg found: " + bsh.args[i] );
        }
    break;
    default:
      System.out.println("Add arg to argument list: " + bsh.args[i] );
      argsList.add(bsh.args[i]);
    break;
  }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.