- PR -

シェルでJavaを起動した際の戻り値

1
投稿者投稿内容
キラヤマト
会議室デビュー日: 2004/05/26
投稿数: 12
投稿日時: 2004-06-21 14:40
こんにちは 
質問させてください。
シェルで javaを起動し Java側では System.out()でステータスを返しているのですが
シェルで $?で戻り値を表示するとすべて 0になってしまいます。
シェルで Javaの戻り値を判定することは出来ないのでしょうか?
前川
常連さん
会議室デビュー日: 2004/04/27
投稿数: 38
お住まい・勤務地: 1DK
投稿日時: 2004-06-21 14:52
>Java側では System.out()でステータスを返しているのですが

Javaでステータスを返すならSystem.exit()では。
キラヤマト
会議室デビュー日: 2004/05/26
投稿数: 12
投稿日時: 2004-06-21 14:57
すいません そうです。
System.exit()です。 書き間違えました。
これで シェルで 戻りを受けれないのでしょうか?
raccoon
ベテラン
会議室デビュー日: 2002/12/18
投稿数: 58
投稿日時: 2004-06-21 15:22
ちょっとやってみた限りではうまく取れます。

コード:

// ソース
public class tmp{
public static void main(String[] args){
System.out.println("tmp");
System.exit(10);
}
}

// 実行結果
prompt$ java tmp
tmp
prompt$ echo $?
10
prompt$

<試した環境>
AIX 5L + Java1.4.2
RedHat Linux AS3.0 + java 1.4.2



ちなみに,UNIXのexit値は実際には1バイト値なので,
exit(256)とかだと0で返ります。
それ以外は・・・ちょっとすぐには思いつかないです。
お使いの環境(OS,シェルの種類),処理の内容,確認方法など
についてもう少し情報をいただければ何かアドバイスできるかも。

[訂正]
# shortじゃなくて1バイト(Java的にはbyte,C的にはchar)でした。


[ メッセージ編集済み 編集者: raccoon 編集日時 2004-06-21 15:36 ]
前川
常連さん
会議室デビュー日: 2004/04/27
投稿数: 38
お住まい・勤務地: 1DK
投稿日時: 2004-06-21 15:24
普通にできるはずです。という事でcygwinで試した所、期待通りの結果が得られました。
これ以上はそちらの環境やソースなどの情報が無いと、なんとも…

A.java
コード:
public class A {
	public static void main(String[] arg){
		System.exit(20);
	}
}

A
コード:
#!/bin/sh

java -cp . A

echo $?


コード:
[*****]%/%#chmod 777 A
[*****]%/%#A
20

1

スキルアップ/キャリアアップ(JOB@IT)