通过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] + "#");