Java命令行参数通过shell脚本

时间:2014-03-02 13:48:14

标签: java shell unix command-line command-line-arguments

当我尝试在命令行中命令它执行正常

$: /application/jre/bin/java -classpath /application/common/lib/apps.jar: ./updater.jar com.application.updatermain mobile

执行完全正常并返回结果,而当我尝试将其放在名为run.sh

的文件中时

如果我创建run.sh

/application/jre/bin/java -classpath /application/common/lib/apps.jar: ./updater.jar com.application.updatermain $@

并尝试运行它

./run.sh mobile

它行为怪异

我的java代码:

if (args.length == 1) {
    if (args[0].equalsIgnoreCase("mobile") ) {
        updateDB = true;
    } else {
        System.out.println(" 1 :Usage: ./run.sh [mobile] "+ args[0]);
        return;
    }
}

它给我输出

1 :Usage: ./run.sh [mobile] mobile

我在这里遗漏了什么。

非常感谢

2 个答案:

答案 0 :(得分:1)

删除脚本"./updater.jar";应包含的"run.sh"之前的空格:

/application/jre/bin/java -classpath /application/common/lib/apps.jar:./updater.jar com.application.updatermain $@

答案 1 :(得分:1)

似乎有些空间会增加参数。 您必须trim arg[0]

  if (args.length == 1) {
     if (args[0].trim().equalsIgnoreCase("mobile") ) {
        updateDB = true;
     }
  else {
        System.out.println(" 1 :Usage: ./run.sh [mobile] "+ args[0]);
        return;
     }
  }