使用 args[] 编写 Java Beanshell 脚本到程序中?

发布于 2024-12-03 20:06:32 字数 544 浏览 2 评论 0原文

Beanshell 文档暗示您可以在命令行上使用此格式运行脚本:

java bsh.Interpreter script.bsh [args]

唯一的问题是我无法让它工作。我知道如何从 Beanshell 脚本中使用参数调用其他脚本,但我无法让初始脚本获取参数。帮助?

例如,像这样的 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 );

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 );

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小苏打饼 2024-12-10 20:06:32

命令行参数位于 bsh.args 下,而不是 args 下。因此,如果您使用 bsh.args 更改代码中 args 的所有实例,那么您应该可以顺利进行。参考:特殊变量和值


这对我有用:

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

示例:

$ bsh foo.bsh 1 2 3
1
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
[旋木] 2024-12-10 20:06:32

感谢 Chris Jester-Young 我使用 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;
  }
}

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;
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文