我将从Java执行一个bash脚本,我的问题是如何区分正常退出和失败退出。
我知道理论上它在正常退出时返回0而对其他退出则返回非零。但是,如果脚本调用"退出1" 或"退出255" ,该怎么办?如果"退出127"它将返回127,但没有找到"命令"错误。
我找到的唯一方法是准备好errOutputFile,但它看起来像傻......
PS:我使用Process.waitfor()来获取退出代码。
答案 0 :(得分:0)
Process.waitFor()ref. here将返回此Process对象表示的子进程的退出值。按照惯例,值0表示正常终止。因此,如果您使用exit,则会获得指定的退出代码。
*您找到的命令未找到错误是不言自明的。
public static void main(String[] args) {
String[] cmd = { "/bin/sh", "-c", "/tmp/test.sh" };
BufferedReader bri = null, bre = null;
int exitC = 0;
try {
Process p = Runtime.getRuntime().exec(cmd);
exitC = p.waitFor();
bri = new BufferedReader(new InputStreamReader(p.getInputStream()));
bre = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line = "";
while ((line = bri.readLine()) != null) {
System.out.println(line);
}
while ((line = bre.readLine()) != null) {
System.out.println(line);
}
bri.close();
bre.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Exit Code: "+ exitC);
}
Bash test.sh
#!/bin/bash
echo Hello World
exit 127
控制台
Hello World
Exit Code: 127