2012-07-20 128 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,它將用於腳本之後的命令,而不是腳本本身。