簡體   English   中英

如何從Java程序向CentOS Shell腳本返回布爾值?

[英]how do I return a boolean from a java program to a CentOS shell script?

在CentOS 7服務器上運行的Shell腳本需要將三個參數傳遞給Java程序,然后讀取Java程序返回的布爾值,作為對這三個參數執行操作的結果。 為了將布爾值返回到Shell腳本中,我需要對以下代碼進行哪些特定更改?

這是第一次嘗試shell腳本:

#!/bin/bash
ARG0=0
ARG1=0 
ARG2=0
CLASSPATH=/path/to/classes
echo -n "Enter zeroth arg: "
read ARG0
echo -n "Enter first arg: "
read ARG1
echo -n "Enter second arg: "
read ARG2
java -cp $CLASSPATH my.package.SomeClass[ARG0, ARG1, ARG2]
#How do I return the Boolean from the Java class into this shell script

這是Java類:

public class SomeClass {

private static Boolean passes = false;

public static void main(String[] args) {
    String arg0 = null;
    String arg1 = null;
    String arg2 = null;

    for (int i = 0; i < args.length; i++){
        if(i==0){arg0=args[i];}
        if(i==1){arg1=args[i];}
        if(i==2){arg2=args[i];}
    }

    if(!arg0.equals(null) && !arg1.equals(null) && !arg2.equals(null)){
        passes = doSomeTest(arg0, arg1, arg2);
    }
    else{passes = false;}
}

public static boolean doSomeTest(String arg0, String arg1, String arg2){
    if(passes_test){return true;}
    else{return false;}
}

public static boolean getPasses(){return passes;}

}

您可以使用System.exit(int)函數返回狀態碼。 這樣做不是代替main返回int ,如C,C ++,C#等。

通常, 0表示成功,其他則表示失敗。

在這里,看起來就像您要在System.exit(passes ? 0 : 1); main方法的末尾System.exit(passes ? 0 : 1);

在bash中,您可以使用$?讀取狀態代碼$? 變量。 實際上,如何使用它取決於您稍后在腳本中如何使用它。 但是,您無需在啟動Java程序的行中進行任何更改。

如果要基於Java程序的狀態代碼的條件代碼,則可以在java -cp ...調用之后執行以下操作:

if [ $? -eq 0 ]
then
    abc
else
    xyz
fi

Java程序可以通過顯式調用System.exit(ret_value)來返回值,其中ret_value是整數。 因此,您可以在main的結尾處執行此操作:

int ret = passes ? 1 : 0;
System.exit(ret);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM