当我尝试运行我的Perl脚本时,它会成功执行。稍后,当我运行此命令echo %errorlevel%
时,它会将输出显示为1.为什么?
答案 0 :(得分:5)
如果Perl返回错误级别1,则调用exit(1)
>perl -e"exit 1"
>echo %errorlevel%
1
或$?
在1
处理程序
END
>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
本身的问题),但我不知道任何此类情况。
答案 1 :(得分:1)
要注意的事项,您必须立即询问%ERRORLEVEL%。批处理脚本中的每一步都会设置或弄乱错误级别,因此如果您希望它保持不变,则不会。例如,如果你运行一个脚本,然后运行另一个命令(dir,或echo等),然后检查errolevel,它将用于脚本之后的命令,而不是脚本本身。