从java返回的整数值在shell脚本中变为不同的值

bc_*_*_ca 2 java shell return-code

我们的java程序在退出时通过执行返回状态代码

System.out.println(statusCode);

System.exit (statuscode);
Run Code Online (Sandbox Code Playgroud)

该值返回到调用java类的shell脚本(korn shell).在脚本中,它通过存储在变量RETSTATUS中获取返回值,如下所示 -

$JAVA_HOME/bin java $SYSTEM_PARAMS -jar myclass.jar

RETSTATUS=$?

echo $RETSTATUS
Run Code Online (Sandbox Code Playgroud)

不知何故,java中打印的值为400(正确的状态代码),但脚本中的RETSTATUS值为echo中的144.任何想法,为什么,以及如何解决它?在此先感谢您的帮助.

Mur*_*nik 5

*nix中short的退出代码是s.当你返回400时溢出返回代码(注意400-256=144).只需返回一个合理的正数255和以下,你应该没事.