【问题标题】:Why is the exit code 1 after I run a Perl script successfully?为什么我成功运行 Perl 脚本后退出代码为 1?
【发布时间】:2012-07-20 05:06:14
【问题描述】:

当我尝试运行我的 Perl 脚本时,它会成功执行。后来,当我运行这个命令 echo %errorlevel% 时,它给我的输出为 1。为什么?

【问题讨论】:

    标签: perl batch-file exit-code


    【解决方案1】:

    如果 Perl 返回错误级别 1,则调用 exit(1)

    >perl -e"exit 1"
    >echo %errorlevel%
    1
    

    $?END 处理程序中设置为1

    >perl -e"END { $? = 1; }"
    >echo %errorlevel%
    1
    

    或者当$!1 时程序死了

    >perl -e"$!=1; die;"
    Died at -e line 1.
    >echo %errorlevel%
    1
    

    (这通常表明系统调用失败并显示“不允许操作”)

    >perl -E"say $!=1"
    Operation not permitted
    

    或者当$!0 并且$?(1 << 8) 时程序死掉了。

    >perl -e"$!=0; $?=1<<8; die;"
    Died at -e line 1.
    >echo %errorlevel%
    1
    

    我想perl 在其他情况下可能会以1 退出(例如加载perl 本身时出现问题),但我不知道有任何此类情况。

    【讨论】:

    • 谢谢!!!!你的意思是perl代码中可能有exit(1)?能不能说的清楚一点。
    • 你指的是最后一段?在perl 本身中可能会调用exit。但就像我说的,我不知道。
    • 我发现我的 perl 脚本中有一个退出代码。我已经进行了更改,非常感谢 ikegami 的帮助
    【解决方案2】:

    需要注意的是,您必须立即询问 %ERRORLEVEL%。批处理脚本中的每一步都会设置或弄乱错误级别,因此如果您希望它保留,它不会。例如,如果您运行一个脚本,然后运行另一个命令(dir 或 echo 等),然后检查 errolevel,它将用于脚本之后的命令,而不是脚本本身。

    【讨论】:

      猜你喜欢
      • 2016-09-01
      • 2010-11-05
      • 1970-01-01
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多