gpt4 book ai didi

java - 在 shell 中执行 java 并等待我得到返回码

转载 作者:行者123 更新时间:2023-12-04 13:48:04 25 4
gpt4 key购买 nike

我现在正在执行一个像这样的 java 程序:

package com.test;

public class Test {

public static void main(String[] args){
execute();
}

public static String execute(){
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "a";
}
}

我想在 linux shell 脚本中执行 Test.execute() 方法,等待方法返回并获取返回码。但是 main() 方法的返回值是 void ,那么我可以做什么来获取返回码或从中返回 msg 呢?

有什么建议吗?


我找到了一个解决方案:

package com.test;

public class Test {

public static void main(String[] args){
execute();
}

public static String execute(){
try {
System.out.println("sleeping");;
Thread.sleep(5000);
Runtime.getRuntime().exit(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "a";
}
}

然后是我的 shell :

#!/bin/bash
java -cp test.jar com.test.Test
echo "The return code of the java application is $?"

我可以得到 Runtime.getRuntime().exit(n) 中的值 n;

最佳答案

首先更改代码示例中 main 方法的签名:

public static void main()public static void main(String[] args)

然后不只是从 main 调用 execute 方法,尝试使用 System.out.println 打印结果:

System.out.println(execute());

然后在 linux shell 中,您可以使用以下方法获取返回值:

> set out   = `java com.test.Test`
> echo $out

关于java - 在 shell 中执行 java 并等待我得到返回码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41671019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com