我有一些批处理脚本用于自动化应用程序构建过程,其中大多数涉及使用&&运算符将命令链接在一起.不可否认,我对Linux更有经验,但基于该经验some_command && other_command应该导致other_command运行iff some_command返回退出代码0.这个答案和这个答案似乎都同意这一点.但是,在Windows cmd.exe中似乎不是这种情况,所有脚本都会运行,而不管之前的错误代码如何.
我决定做一个简单的测试来说服自己我不会疯狂.考虑一下test.bat,它返回退出代码1:
@echo off
EXIT /B 1
Run Code Online (Sandbox Code Playgroud)
运行test.bat && echo This shouldn't print打印'这不应该打印'.但由于退出代码显然为1,echo因此不应调用.我已经测试过错误代码实际上是1使用%errorlevel%变量,它们按预期出现(在我运行脚本之前为0,之后为1).
在Linux上我尝试了同样的事情.这是test.sh:
#!/bin/bash
exit 1
Run Code Online (Sandbox Code Playgroud)
运行./test.sh && echo "This shouldn't print"没有输出,正是我所期望的.
这里发生了什么?
(注意:操作系统是Windows 7企业版)