如何解决PERL中使用的exit0和exit1有什么区别?
因此,在处理一个已经实施的项目时,我遇到了一个 PERL 脚本。由于是机密信息,因此我无法透露太多细节,但是代码有点像这样:
if(defined($x)){
exit(0);
}
#...........
#.some other code.
#...........
if(!defined($y)){
print "ERROR !";
exit(1);
}
我假设exit(1)处于错误状态,而exit(0)用于成功案例。但是由于我们已经在打印错误消息,所以 exit(0)和 exit(1)之间有什么区别?
解决方法
产生该程序的过程可以检查您返回的数字。 0
通常表示“没有错误”(这是Perl脚本的默认退出状态)。其他值是程序特定的。
例如,grep
退出
-
0
,当找到匹配项时 -
1
,如果没有找到匹配项 -
2
,发生错误时
所以你可以做
if grep -q foo file; then
echo 'match'
else
echo 'no match (or error)'
fi
您可能应该使用die
而不是print
和exit
。 die("$msg\n")
之外的eval
大致等于
print STDERR "$msg\n";
exit( $! || ( $? >> 8 ) || 255 );
因此更简单,将消息按应有的方式打印到STDERR(而不是STDOUT),并确保使用非零代码退出(希望在调试时有意义)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。