Почему код выхода 1 после успешного запуска сценария Perl?
Когда я пытаюсь запустить свои Perl-скрипты, он выполняется успешно. Позже, когда я запускаю эту команду echo %errorlevel%
, это дает мне вывод как 1. Почему?
2 ответа
Если 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
сам), но я не знаю таких обстоятельств.
Что-то, о чем следует знать, вы должны немедленно опросить%ERRORLEVEL%. Каждый шаг в пакетном скрипте будет устанавливать или нарушать уровень ошибки, поэтому, если вы ожидаете, что он останется, он не будет. Например, если вы запускаете скрипт, затем запускаете другую команду (dir или echo и т. Д.) И затем проверяете уровень ошибки, это будет для команды ПОСЛЕ скрипта, а не для самого скрипта.