-1

Perl スクリプトを実行しようとすると、正常に実行されます。後でこのコマンドを実行するecho %errorlevel%と、出力が 1 になります。なぜですか?

4

2 に答える 2

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

または isとwasのとき$!にプログラムが終了しました。0$?(1 << 8)

>perl -e"$!=0; $?=1<<8; die;"
Died at -e line 1.
>echo %errorlevel%
1

他の状況 (ロード自体の問題など) でperl終了することは可能だと思いますが、そのような状況は知りません。1perl

于 2012-07-20T05:34:10.513 に答える
1

注意すべき点として、%ERRORLEVEL% をすぐに調査する必要があります。バッチ スクリプトのすべてのステップでエラー レベルが設定または変更されるため、エラー レベルが維持されることを期待しても、エラー レベルは維持されません。たとえば、スクリプトを実行し、別のコマンド (dir、または echo など) を実行してからエラーレベルを確認すると、スクリプト自体ではなく、スクリプトの後のコマンドになります。

于 2012-07-20T11:29:43.753 に答える