我如何 return 从 java 程序到 CentOS shell 脚本的布尔值?
how do I return a boolean from a java program to a CentOS shell script?
CentOS 7服务器上的shell脚本运行需要传递三个参数给java程序,然后读取一个布尔值return Java 程序作为对三个参数进行操作的结果。 为了将布尔值 return 放入 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 class:
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)
函数来 return 状态代码。这是完成的,而不是 main
returning int
,如在 C、C++、C# 等中
通常,0
表示成功,其他任何表示失败。
在这里,看起来在您的 main
方法结束时您需要 System.exit(passes ? 0 : 1);
在 bash 中,您可以使用 $?
变量读取状态代码。您如何使用它实际上取决于您稍后在脚本中如何使用它。但是,您无需更改启动 Java 程序的行中的任何内容。
如果您想要基于 Java 程序的状态代码的条件,您可以在 java -cp ...
调用后执行以下操作:
if [ $? -eq 0 ]
then
abc
else
xyz
fi
java 程序可以通过显式调用 System.exit(ret_value)
来 return 一个值,其中 ret_value
是一个整数。因此,您可以在 main:
的末尾执行此操作
int ret = passes ? 1 : 0;
System.exit(ret);
CentOS 7服务器上的shell脚本运行需要传递三个参数给java程序,然后读取一个布尔值return Java 程序作为对三个参数进行操作的结果。 为了将布尔值 return 放入 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 class:
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)
函数来 return 状态代码。这是完成的,而不是 main
returning int
,如在 C、C++、C# 等中
通常,0
表示成功,其他任何表示失败。
在这里,看起来在您的 main
方法结束时您需要 System.exit(passes ? 0 : 1);
在 bash 中,您可以使用 $?
变量读取状态代码。您如何使用它实际上取决于您稍后在脚本中如何使用它。但是,您无需更改启动 Java 程序的行中的任何内容。
如果您想要基于 Java 程序的状态代码的条件,您可以在 java -cp ...
调用后执行以下操作:
if [ $? -eq 0 ]
then
abc
else
xyz
fi
java 程序可以通过显式调用 System.exit(ret_value)
来 return 一个值,其中 ret_value
是一个整数。因此,您可以在 main:
int ret = passes ? 1 : 0;
System.exit(ret);