Сценарии Java Beanshell с аргументами [] для программы? - PullRequest
2 голосов
/ 09 сентября 2011

Документация Beanshell подразумевает, что вы можете запустить сценарий, используя этот формат в командной строке:

java bsh.Interpreter script.bsh [args]

Единственная проблема в том, что я не могу заставить его работать.Я знаю, как вызывать другие сценарии с аргументами из сценария Beanshell, но я не могу заставить первоначальный сценарий принимать аргументы.Справка?

Например, скрипт типа бобовой оболочки, подобный этому, не будет анализировать аргументы:

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

Кроме того, это также не работает:

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

Ответы [ 2 ]

3 голосов
/ 09 сентября 2011

Аргументы командной строки доступны в bsh.args, а не args. Поэтому, если вы измените все экземпляры args в своем коде с помощью bsh.args, вам будет хорошо. Справка: Специальные переменные и значения .


Это сработало для меня:

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

Пример:

$ bsh foo.bsh 1 2 3
1
2
3
0 голосов
/ 09 сентября 2011

Благодаря Крису Джестеру-Юнгу Я написал решение для этого с помощью 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;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...