checkNum ()
{
echo 6
echo 7
return 8
}
checkNum
echo $? #本行输出的是return返回值8
执行脚本输出 6 7 8,Java调用shell脚本获取返回值是获取到所有echo输出来的数据,如当前输出6 7 8都会返回到Java中。
https://blog.csdn.net/tengdazhang770960436/article/details/12014839
https://www.jb51.net/article/143958.htm
代码示例
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
/*
* java中调用shell脚本并获取返回值,linux下tomcat运行
*/
public class JavaShell
{
public static void main(String[] args)
{
ProcessBuilder pbsh = new ProcessBuilder("bash", "shell.sh");
pbsh.directory(new File("/tmp"));// 指定检查脚本存放目录,绝对路径
/*相对路径方式
ProcessBuilder pb = new ProcessBuilder("bash", "./scripts/test.sh");
pb.directory(new File(System.getProperty("user.dir")));//运行当前路径
*/
pbsh.redirectErrorStream(true);//合并标准错误和标准输出
try
{
Process pr = pbsh.start();
// 读取输出,脚本运行结束后获取返回值,流的转换
BufferedReader stdInput = new BufferedReader(new InputStreamReader(pr.getInputStream()));
StringBuffer strBuf = new StringBuffer();
String line;
while ((line = stdInput.readLine()) != null)//echo输出多值,循环读取直到结束
{
strBuf.append(line).append("^");
}
String[] result = strBuf.toString().split("\\^");
pr.waitFor();
} catch (Exception e)
{
e.printStackTrace();
}
}
}