我有一个非常简单的包装脚本,可以获取参数并将它们传递给java jar。 不幸的是,我经历了非常奇怪的行为。以下是一个例子。
执行脚本的命令:
./wrapper http://localhost:8485/metrics 900 200
脚本:
#/bin/sh
/usr/java/default/bin/java -jar /usr/plugins/checkmetrics.jar $@
Java代码:
public static void main(String[] args) throws IOException {
String metricsUrl = args[0];
int heapWarnValue = Integer.parseInt(args[1]);
int threadWarnValue = Integer.parseInt(args[2]);
}
这给了我NumberFormatException:
"xception in thread "main" java.lang.NumberFormatException: For input string: "200
但如果我将命令改为跟随,一切正常:
./wrapper http://localhost:8485/metrics 900 200" "
打破了我的大脑,但我无法理解我错在哪里。有人能解释一下吗 提前致谢
答案 0 :(得分:3)
脚本末尾是否存在未正确处理的LF或CR字符(如果在Windows环境中有unix行结尾,反之亦然)?
我提到这个的原因是你提到的错误说它是
输入字符串:“200
我愿意打赌下一行开头还有另一个引号。如果是这种情况,它会尝试将200和CR一起解析为整数。整理行结尾,一切都会好的。