11

Java プログラム ( System.exit(1);) からシェル スクリプトに戻り値を取得しようとしていますが、クラッシュしない場合は常に 0 である jvm 終了コードを返すようです。テスト目的で、これは 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}"

ありがとう

4

2 に答える 2

17

スクリプトに 2 行しかない場合は、正しい終了コードをチェックしていません。

私はあなたが次のようなことをしていると推測しています:

$ java YourJavaBinary
$ ./script 

スクリプトには以下のみが含まれます。

STATUS="${?}"
echo "${STATUS}"

ここではscript、サブシェルで実行されます。したがって、スクリプトを実行する$?と、サブシェルでは何もない、そのシェルの最後のコマンドの値になります。したがって、常に を返します0

おそらくやりたいことは、スクリプト自体で Java バイナリを呼び出すことです。

java YourJavaBinary
STATUS="${?}"
echo "${STATUS}"

または、スクリプトを使用せずに終了コードを直接確認します。

$ java YourJavaBinary ; echo $?
于 2013-09-12T12:28:51.930 に答える