从Bash脚本访问ERRORLEVEL

54

我有一个应用程序,在从Windows命令提示符调用时才能正常工作。这可能与输入/输出流有关。

因此,我可以通过将其作为参数传递给cmd来从bash脚本中调用它。

cmd /c "badapp"

这很好用 - 但是偶尔badapp会出现网络问题 - 而我却没有收到任何反馈。是否有办法从bash脚本中检查ERRORLEVEL - 或查看badapp在运行bash脚本的终端上的输出?

1个回答

76

是的,$? 是包含错误级别的变量。

例如尝试 echo $?

来自 Cygwin bash 的示例(我猜想你正在使用 Cygwin,因为你在你的示例中使用了 Windows 的 cmd)。

susam@nifty /cygdrive/c/Documents and Settings/susam/Desktop
$ cmd /c "badapp"
'badapp' is not recognized as an internal or external command,
operable program or batch file.

susam@nifty/cygdrive/c/Documents and Settings/susam/Desktop
$ if [ $? -eq 0 ]
> then
>   echo "good"
> else
>   echo "bad"
> fi
bad

抱歉,我应该提到我正在使用Cygwin。您确定这会将Windows的ERRORLEVEL转换为bash等效的$? - shipshape
9
好的!为什么不直接尝试一下,亲自验证一下呢? - Susam Pal
谢谢,总的来说这似乎有效。问题似乎出在“badapp”上——当它遇到网络问题时,它并不总是设置错误级别。 - shipshape

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接