シェルに終了コードを渡す方法 †
Linux(*BSD)などを使用していて、Javaプログラムとシェルスクリプトとの連携を取るため
Javaプログラムの終了コード(終了ステータス)を取得したい場合があると思います。
このような場合は、System.exitを使えば簡単に実現することができます。
以下にサンプルソースと実行例をいくつか紹介します。
System.exitを使う †
System.exitを使用すれば、シェルスクリプトに終了ステータス(終了コード)を返却することができます。
ただし、返却する値によっては意図しない値が返却されますので、意図しない値が返却される実行例も記します。
4つのサンプルソースを用意しました。
返却する値が違うだけです。
- 256を返却
class ExitCode256 {
public static void main(String[] args) {
int exitcode = 256;
System.out.println("exitcode: " + exitcode);
System.exit(exitcode);
}
}
- -1を返却
class ExitCodeMinus1 {
public static void main(String[] args) {
int exitcode = -1;
System.out.println("exitcode: " + exitcode);
System.exit(exitcode);
}
}
実行例 †
コンパイルして実行した時の出力です。
$ javac ExitCode*.java
上記の出力からわかるように、シェルの$?で最後に実行したコマンドの終了コードを表示します。
しかし、256, -1は意図した値になっていません。
これは、シェルでは1バイト(char)として扱っているためだと思われます。
終了コードの値には気をつけてシェルスクリプトとの連携を行ってください。
以上、シェル(シェルスクリプト)にJavaで作成したプログラムの終了コード(終了ステータス)を返却する方法でした。