2012-07-20 39 views

回答

5

如果Perl,以ERRORLEVEL 1返回,然后要么exit(1)被称为

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

$?在一个END处理

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

或程序去世时$!设置为11

>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本身的问题),但我不知道有任何这样的情况。

+0

谢谢!!!你的意思是可能有一个退出(1)在Perl代码?你能更清楚吗? – pauler 2012-07-20 06:39:42

+0

你指的是最后一段?可能会在'perl'本身调用'exit'。但就像我说的,我不知道任何。 – ikegami 2012-07-20 18:55:13

+0

我发现我的perl脚本中有一个退出代码。我已经做出了改变,感谢like帮助ikegami – pauler 2012-07-23 06:23:29

1

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

相关问题