【发布时间】:2012-07-20 05:06:14
【问题描述】:
当我尝试运行我的 Perl 脚本时,它会成功执行。后来,当我运行这个命令 echo %errorlevel% 时,它给我的输出为 1。为什么?
【问题讨论】:
标签: perl batch-file exit-code
当我尝试运行我的 Perl 脚本时,它会成功执行。后来,当我运行这个命令 echo %errorlevel% 时,它给我的输出为 1。为什么?
【问题讨论】:
标签: perl batch-file exit-code
如果 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。但就像我说的,我不知道。
需要注意的是,您必须立即询问 %ERRORLEVEL%。批处理脚本中的每一步都会设置或弄乱错误级别,因此如果您希望它保留,它不会。例如,如果您运行一个脚本,然后运行另一个命令(dir 或 echo 等),然后检查 errolevel,它将用于脚本之后的命令,而不是脚本本身。
【讨论】: