Linuxのシェルスプリプトでは、Javaの実行結果(System.exit)の値を取得できることが今回、わかりました。
以前に作成した「Test.jarファイル」を使用して、クラスの実行結果を取得するシェルスプリプトを書いてみました。
サンプル・コード
/home/tigertaizo/Test.sh
vim /home/tigertaizo/Test.sh
#!/bin/bash PGM_NAME=Test01 java tigertaizo.$PGM_NAME RETURN_CODE=$? echo $RETURN_CODE if [ $RETURN_CODE = 0 ]; then echo "${PGM_NAME}-正常終了" else echo "${PGM_NAME}-異常終了" fi
作成しましたら、実行権限を付加します。
$ chmod +x Test.sh
実行結果
(1) PGM_NAME=Test01
$ ./Test.sh run Test01#main. Test01は、正常終了しました。 0 Test01-正常終了
(2) PGM_NAME=Test02
$ ./Test.sh run Test02#main. Test02は、異常終了しました。 1 Test02-異常終了
(3) PGM_NAME=Test03
guavaがクラスパスに通っている場合
$ ./Test.sh run Test03#main. 文字列sは、null または 空白です。 0 Test03-正常終了
guavaがクラスパスに通っていない場合
$ ./Test.sh run Test03#main. Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Strings at tigertaizo.Test03.main(Test03.java:9) Caused by: java.lang.ClassNotFoundException: com.google.common.base.Strings at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1 more 1 Test03-異常終了
(4) PGM_NAME=Test04
$ ./Test.sh run Test04#main. Exception in thread "main" java.lang.NullPointerException at tigertaizo.Test04.main(Test04.java:6) 1 Test04-異常終了
基本的なことなんでしょうが、シェルからJavaの実行結果を取得できることで、実現できることの幅が広がるように感じました。