我试图从java程序(System.exit(1);
)获取返回值到shell脚本,但它似乎返回jvm退出代码,如果它没有崩溃,它总是0.出于测试目的,这是我main()中的第一行.有人知道怎么做吗?
我的bash代码:
....................
java bsc/cdisc/ImportData $p $e $t
#-----------------------------------------
# CATCH THE VALUE OF ${?} IN VARIABLE 'STATUS'
# STATUS="${?}"
# ---------------------------------------
STATUS="${?}"
# return to parent directory
cd ../scripts
echo "${STATUS}"
Run Code Online (Sandbox Code Playgroud)
谢谢
P.P*_*.P. 13
如果您的脚本只有两行,那么您不会检查正确的退出代码.
我猜你在做的事情如下:
$ java YourJavaBinary
$ ./script
Run Code Online (Sandbox Code Playgroud)
脚本仅包含的位置:
STATUS="${?}"
echo "${STATUS}"
Run Code Online (Sandbox Code Playgroud)
这里,script
在子shell中执行.因此,当您执行脚本时,$?
该shell中的last命令的值是子shell中的任何内容.因此,它总是回归0
.
您可能想要做的是在脚本中调用java二进制文件.
java YourJavaBinary
STATUS="${?}"
echo "${STATUS}"
Run Code Online (Sandbox Code Playgroud)
或者直接检查退出代码而不使用脚本:
$ java YourJavaBinary ; echo $?
Run Code Online (Sandbox Code Playgroud)
你应该这样做:
Test.java:
public class Test{
public static void main (String[] args){
System.exit(2);
}
}
Run Code Online (Sandbox Code Playgroud)
test.sh
#!/bin/bash
java Test
STATUS=$?
echo $STATUS
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
30855 次 |
最近记录: |