python不出结果直接退出_python – 如何正确报告批处理中的退出状态?

正如@dbenham所说,“[i] f命令在EXIT / B之后解析,在同一个命令块中,然后问题就会出现,即使后续命令永远不会执行”.在这种特殊情况下,IF语句的主体基本上被评估为

(echo first if) & (exit /b 1) & (if "" == "" (echo second if))

和& operator是cmd!eComSep函数(即命令分隔符).通过将全局变量cmd!LastRetCode设置为1然后基本上执行GOTO:EOF来评估EXIT / B 1命令(函数cmd!eExit).当它返回时,第二个eComSep看到cmd!GotoFlag已设置,因此跳过评估右侧.在这种情况下,它还忽略左侧的返回码而改为返回SUCCESS(0).这会被传递到堆栈以成为进程退出代码.

下面我已经包含了运行bug.cmd和ok.cmd的调试会话.

bug.cmd:

(test) C:\Temp>cdb -oxi ld python

Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64

Copyright (c) Microsoft Corporation. All rights reserved.

CommandLine: python

Symbol search path is: symsrv*symsrv.dll*

C:\Symbols*http://msdl.microsoft.com/download/symbols

Executable search path is:

(1404.10b4): Break instruction exception - code 80000003 (first chance)

ntdl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值