首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows %ERRORLEVEL% == $吗?在Linux中

Windows %ERRORLEVEL% == $吗?在Linux中
EN

Stack Overflow用户
提问于 2016-01-15 22:25:18
回答 1查看 3.8K关注 0票数 0

尝试使用windows批处理文件,在下面的代码中,我通过在www中搜索找到。

代码语言:javascript
复制
@ECHO OFF
REM Call this with two arguments, and it will add them.
SET a=%1+%2
IF %ERRORLEVEL%==0 (goto errors-0) ELSE (goto errors-1)
REM Instead of using goto with the variable, this uses an IF-ELSE structure
:errors-0
REM This is if it was successful
ECHO %a%
goto exit
:errors-1
REM this is if it had an error:
ECHO Errors occurred.
goto exit
REM GUESS WHAT, THIS REM WILL NEVER EVER BE READ!  IT WILL BE SKIPPED OVER BY THE GOTOS
:exit
ECHO.
ECHO press any key to exit.
PAUSE>nul

代码应该接受两个参数,添加它们并回显结果。

但这不会在我的Windows8.1机器上成功执行。以下是我得到的:

代码语言:javascript
复制
C:\ProjectDoc>add3.bat
Errors occurred.

press any key to exit.

因此,U为ERRORLEVEL添加了一个回显,以便在执行SET命令后查看它的值。以下是产出:

代码语言:javascript
复制
C:\ProjectDoc>add3.bat 2 3
9009
Errors occurred.

press any key to exit.
C:\ProjectDoc>

所以,errorlevel中的$?等于Linux的$?。对于每个成功执行命令,它应该返回0,还是不同?阅读一些文档与Linux $?有关,但在Linux中它显然不是$?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-15 22:40:48

是的,准确地说,%errorlevel%类似于$?在巴什贝壳里。

在您的批处理文件中,SET a=%1+%2没有执行您希望它做的事情。它只是将变量a的值设置为字符串"2+3“,前提是您使用参数2 3运行该文件。如果您想做算术,您需要使用/A选项:set /a a=%1+%2

SET命令(和许多其他内置命令)只在实际出现错误时设置ERRORLEVEL。如果成功,ERRORLEVEL将保留其先前的值。我想这就是你在问题中所看到的。

相反,当命令运行可执行文件时,当进程完成时,它总是设置ERRORLEVEL。

除了检查ERRORLEVEL变量的特定值外,使用以下表达式检查错误级别也是惯用的(出于历史原因)

IF ERRORLEVEL 1 ECHO Hello

如果ERRORLEVEL为1或以上,这将运行给定的命令-换句话说,如果发生了任何错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34820907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档