Perl脚本的非零退出

时间:2013-01-29 13:06:08

标签: perl unix

在我的Perl脚本中,如果我使用exit(-1),脚本将退出。但是如果我使用exit(-433)exit(-233),它就不会退出。为什么?下面是一个例子。

if ($result1[0] eq "Error") {
    print "Error occurred while updating https route\n";
    print "Error returned from the script:\n";
    print $result1[1];
    exit(-377);
}

2 个答案:

答案 0 :(得分:3)

运行perlbug以提交错误报告。尽管你的论点不正确,但这不应该阻止exit运作。

正如您所看到的那样(从未打印过y),我无法在Linux系统上复制此内容:

$ perl -E'say "x"; exit($ARGV[0]); say "y";' -- -377 ; echo $?
x
135

$ perl -E'say "x"; exit($ARGV[0]); say "y";' -- -1 ; echo $?
x
255

$ perl -E'say "x"; exit($ARGV[0]); say "y";' -- -433 ; echo $?
x
79

$ perl -E'say "x"; exit($ARGV[0]); say "y";' -- -233 ; echo $?
x
23
在Unix系统上可以接受

0..255。 Windows上为0..65535。

答案 1 :(得分:0)

我甚至会将退出值限制为0..127,原因如下:如果您的程序(在Unix上)被信号N杀死,则退出值设置为N + 128。因此,如果使用更高的退出值,则无法区分“正常”退出与信号强制退出的退出。