当我尝试运行我的 Perl 脚本时,它会成功执行。后来,当我运行这个命令时echo %errorlevel%,它给我的输出为 1。为什么?
1511 次
2 回答
5
如果 Perl 返回错误级别 1,则exit(1)调用其中之一
>perl -e"exit 1"
>echo %errorlevel%
1
或在处理程序$?中设置1END
>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
或者程序在$!was0和$?was时死亡(1 << 8)。
>perl -e"$!=0; $?=1<<8; die;"
Died at -e line 1.
>echo %errorlevel%
1
我想有可能在其他情况下perl退出1(比如加载perl本身的问题),但我不知道有任何这样的情况。
于 2012-07-20T05:34:10.513 回答
1
需要注意的是,您必须立即询问 %ERRORLEVEL%。批处理脚本中的每一步都会设置或弄乱错误级别,因此如果您希望它保留,它不会。例如,如果您运行一个脚本,然后运行另一个命令(dir 或 echo 等),然后检查 errolevel,它将用于脚本之后的命令,而不是脚本本身。
于 2012-07-20T11:29:43.753 回答