2011-09-09 24 views
2

Beanshellドキュメントでは、コマンドラインで、このフォーマットを使用してスクリプトを実行できることを意味しますプログラムへのargs []によるJava Beanshellスクリプト?

java bsh.Interpreter script.bsh [args] 

これで唯一の問題は、私はそれが仕事を得ることができないということです。私はBeanshellスクリプトからargsで他のスクリプトを呼び出す方法を知っていますが、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); 

答えて

3

は、コマンドライン引数はで入手可能ですbsh.argsではなく、argsです。したがって、コード内のargsのすべてのインスタンスをbsh.argsに変更すると、良い結果が得られます。リファレンス:Special Variables and Values


これが私の仕事:

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

例:Chris Jester-Young

$ bsh foo.bsh 1 2 3 
1 
2 
3 
+0

あなたはどのように知っていますかbsh.argsを画面にダンプするには? – djangofan

+0

それはうまくいった。ありがとう。 – djangofan

0

おかげで私は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; 
    } 
} 
関連する問題