-1

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

4

2 回答 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 回答