Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过shell脚本的Java命令行参数_Java_Shell_Unix_Command Line_Command Line Arguments - Fatal编程技术网

通过shell脚本的Java命令行参数

通过shell脚本的Java命令行参数,java,shell,unix,command-line,command-line-arguments,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.shas /application/jre/bin/java -classpath /application/co

当我尝试在命令行中执行命令时,它执行得很好

$: /application/jre/bin/java -classpath /application/common/lib/apps.jar: ./updater.jar com.application.updatermain mobile
这执行得非常好,并返回结果,而当我尝试将其放入名为
run.sh的文件时

如果我创建一个
run.sh
as

/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
我有什么遗漏吗


非常感谢

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

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

似乎有些空位增加了争论。 您必须
修剪
参数[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;
     }
  }

不要将
$@
放在引号中。尝试了没有用:(当你打印
args
时,你会怎么做?(不仅仅是
args[0]
)?为什么在“/updater.jar”之前有as空格?它不应该是类路径的一部分吗?当我尝试打印它时,我没有得到任何空间。试试这个:System.out.println(“1:用法:./run.sh[mobile]#”+args[0] + "#");