【发布时间】:2023-03-30 06:48:01
【问题描述】:
是否有一套标准的 Window shell 脚本(*.bat 文件)返回码?我正在寻找类似于 Linux 退出代码的东西,其中 0== 成功和非零 == 失败。 我需要一种以编程方式检查我的 shell 脚本在执行期间是否失败的方法。
【问题讨论】:
是否有一套标准的 Window shell 脚本(*.bat 文件)返回码?我正在寻找类似于 Linux 退出代码的东西,其中 0== 成功和非零 == 失败。 我需要一种以编程方式检查我的 shell 脚本在执行期间是否失败的方法。
【问题讨论】:
最常见的做法与 Unix 标准相同,因此返回码(在批处理文件中也称为错误级别)为 0 表示成功,而任何高于 0 的都是错误。
虽然有许多相关的问题需要寻找 - 请查看本指南:
【讨论】:
0 表示成功,非 0 表示失败也是 Windows 批处理命令的惯例。当命令失败时,它会设置 ERRORLEVEL,这是一个可以在批处理文件中测试的特殊变量。
if errorlevel 1 goto failure
只要您不运行其他命令,错误级别就会传递给运行 .bat 文件的调用者。
【讨论】:
您可以检查错误级别的值。
IF shell 语句的帮助告诉我以下内容:
IF [NOT] ERRORLEVEL number command
ERRORLEVEL number Specifies a true condition if the last program run
returned an exit code equal to or greater than the number
specified.
【讨论】:
通常,Windows 实用程序在成功时返回 0,在错误时返回非零值(通过 ERRORLEVEL 变量),就像 Linux 应用程序一样。不幸的是,没有强制执行的官方“标准”,并且并非每个实用程序或脚本都设置错误级别。
如果您有要测试其返回状态的脚本,请确保该脚本使用 EXIT /B ## 退出,这会导致错误级别设置为 ##。
【讨论】:
我更喜欢这种方式:
[run an exe here]
IF %errorlevel% NEQ 0 (
CALL :SSH_fail filename.sh %errorlevel%
)
:SSH_fail
Email.exe "%mailTo%" "%mailProgram% - SSH Failure " "Body: errorlevel:%~2 file name: %~1"
goto cont
这样我就可以确切地知道错误级别是什么。我认为最多可以有 250 个错误级别。
【讨论】: