PERL中使用的出口(0)和出口(1)之间有什么区别?

PERL中使用的出口(0)和出口(1)之间有什么区别?,perl,Perl,因此,我在处理一个已经实现的项目时遇到了一个PERL脚本。由于它是保密的,我不能透露太多细节,但代码有点像这样: if(defined($x)){ exit(0); } #........... #.some other code. #........... if(!defined($y)){ print "ERROR !"; exit(1); } 我假设exit1处于错误状态,exit0用于成功案例。但是由于我们已经在打印错误消息,exi

因此,我在处理一个已经实现的项目时遇到了一个PERL脚本。由于它是保密的,我不能透露太多细节,但代码有点像这样:

if(defined($x)){
    exit(0);
}
#...........
#.some other code.
#...........

if(!defined($y)){
      print "ERROR !";
      exit(1);
}

我假设exit1处于错误状态,exit0用于成功案例。但是由于我们已经在打印错误消息,exit0和exit1之间的区别是什么?

生成程序的过程可以检查您返回的数字。0通常意味着没有错误,它是Perl脚本的默认退出状态。其他值是特定于程序的

例如,grep退出时带有

0,当它找到匹配项时 1,当它没有找到匹配项时 2,当发生错误时 所以你可以

如果grep-qfoo文件;然后 回声“匹配” 其他的 回显“不匹配或错误” fi 您可能应该使用die而不是打印和退出。评估之外的die$msg\n大致相当于

打印STDERR$msg\n; 退出$!| |$?>>8 || 255 ;
因此,更简单的是,消息被打印到STDERR,而不是它应该打印的STDOUT,并且它保证以非零代码退出,并且希望是调试时有意义的代码。

这不限于Perl。是一个通用的概念,让一个程序发出信号,表明它是否能做它被要求做的事情,或者是否出了问题,以便其他程序(通常是调用它的程序)能够对它作出反应。@CharlesDuffy,PERL和linux的工作方式相同,是这样吗?语言的名称是PERL,而不是PERL;它不是首字母缩略词。@AshleshaSunilAgate,perl中的exit与C或任何其他语言中的exit相同,因此是的,正常的操作系统约定适用于该exit状态的含义以及其他程序将如何解释它。@AshleshaSunilAgate,……而exit 0是在shell中以成功状态编写exit的方式,exit0是用perl编写的,两种方式的含义都是一样的。你能解释一下我的案例中打印的内容或内部发生的事情的区别吗?你的案例是什么意思,以及你的案例和什么之间的区别吗?@AshleshaSunilAgate:从代码的角度来看,没有区别。但是,无论是另一个程序还是用户,都有东西通过命令shell调用您的程序。如果调用程序的内容检查返回值,那么在第一种情况下它将得到0,在第二种情况下得到1。按照Unix的传统,0表示程序成功运行,任何非零返回值都表示错误。特定非零返回值的含义特定于所讨论的程序。