相关疑难解决方法(0)

ExitCodes大于255,可能吗?

如果是,在哪个操作系统,shell或其他什么?

考虑下面的java程序(我只是以java为例,任何语言对这个问题都有好处,更多的是关于操作系统):

public class ExitCode {
    public static void main(String args[]) {
        System.exit(Integer.parseInt(args[0]));
    }
}
Run Code Online (Sandbox Code Playgroud)

在Linux和bash上运行它,它总是返回不等于255的值,例如(echo $?打印上一个执行命令的退出代码)

> java ExitCode 2; echo $?
2

> java ExitCode 128; echo $?
128

> java ExitCode 255; echo $?
255

> java ExitCode 256; echo $?
0

> java ExitCode 65536; echo $?
0
Run Code Online (Sandbox Code Playgroud)

编辑:下面的(只有,到目前为止)答案完全解释了在UNIX上发生的事情.我仍然想知道其他操作系统.

shell operating-system exit-code

32
推荐指数
2
解决办法
1万
查看次数

为什么在Perl中退出代码255而不是-1?

为什么当我将退出代码$ ?,在Perl中移位8时,当我期望它为-1时,我得到255?

perl exit

7
推荐指数
2
解决办法
1万
查看次数

为什么Perl系统的返回值不符合我的预期?

首先让我解释一下我想要实现的目标.基本上有两个Perl脚本.一个是我用UI调用主脚本.运行此脚本的用户将看到他可以从菜单中调用的其他脚本的列表.此列表通过自定义配置文件加载.主脚本的目的是能够根据需要在将来添加其他脚本而不更改源,并作为cron作业(非交互模式)和用户需要(交互模式)运行.作为公司政策,我无权发布整个脚本,因此我将发布交互模式用户选择部分:

for($i = 0;$i < @{$conf}+1;$i++)
    {
        if($i % 2 == 1 || $i == 0)
        {
            next;
        }
        print $n++ . ". @{$conf}[$i-1]\n";
    }
    print "(health_check) ";

    #
    # User selection
    #

    my $in = <>;
    chomp($in);

    if($in =~ /[A-Za-z]/)
    {
        write_log("[*] Invalid Selection: $in");
        print "\n<<<<<<<<<<<<>>>>>>>>>>>>>\n";
        print ">>> Invalid Selection <<<\n";
        print "<<<<<<<<<<<<>>>>>>>>>>>>>\n";
    }
    elsif($in == 0)
    {
        write_log("Exiting interactive mode");
        last;
    }
    elsif(scalar($scripts[$in]))
    {
        write_log("[*] running: $scripts[$in]");
        $rez = system('./' . "$scripts[$in]");

        if($rez == 0b00)
        {
            printf("%s: …
Run Code Online (Sandbox Code Playgroud)

perl exit-code

2
推荐指数
1
解决办法
8768
查看次数

标签 统计

exit-code ×2

perl ×2

exit ×1

operating-system ×1

shell ×1