【发布时间】:2014-07-11 15:33:44
【问题描述】:
我将从 Java 执行一个 bash 脚本,我的问题是如何区分正常退出和失败退出。
我知道理论上它返回 0 表示正常退出,而返回非 0 表示其他退出。但是如果脚本调用 "exit 1" 或 "exit 255" 怎么办?如果“exit 127”会返回 127 但没有“command not found”错误。
我发现的唯一方法是准备好 errOutputFile 但它看起来很愚蠢......
PS:我使用 Process.waitfor() 来获取退出代码。
【问题讨论】:
-
您能否详细说明这部分:“如果“退出127”将返回127,但没有“找不到命令”错误。”
-
@Drux 我的意思是对于 bash 脚本,如果它执行一个不存在的命令,il 将返回错误代码 127,表示“找不到命令”。例如,“qjzoiegj”。但是我也可以执行“exit 127”来获得 127 的返回值。这就是为什么我说我无法区分成功执行和失败的执行。
-
我明白了。在这种情况下,我认为您确实必须查看输出(不仅仅是退出代码)才能做出确切的区分。
-
@java_learner "我也可以执行
exit 127得到127的返回值"你不用exit返回一个值乙>。您使用它返回一个退出代码。按照惯例,0表示 OK。任何其他都意味着有错误。如果您的脚本需要“返回某个值”,它应该将其写入其标准输出并以状态码 0 终止。