求Perl官方文档:无exit()语句时程序的退出码规则
Perl脚本无显式exit/die时的退出码官方说明
Perl官方文档对脚本无显式终止语句时的退出码有明确规定:
来自perlrun文档(Perl运行时规范)
如果脚本运行至末尾而未调用
exit(),则退出状态码为0。如果调用了exit(N),退出状态码为N。如果脚本因die()终止,若die()无参数则退出状态码为255;若有参数,参数为数值则用该数值作为状态码,否则状态码为255。
来自perlfunc文档(函数参考)
exit()函数接受一个可选的数值参数作为退出状态码。如果省略该参数,默认以0状态退出。
这意味着:当Perl脚本正常执行到末尾(没有die或显式exit调用),其退出码固定为0,不会返回最后一次函数调用或系统调用的返回值——这和bash的行为完全不同,bash会将最后一个命令的退出码作为脚本的退出码。
举个例子验证:
#!/usr/bin/perl # 执行一个会返回非0退出码的系统调用 system("false"); # 脚本运行到此处结束,无显式exit
运行该脚本后,用echo $?查看退出码,结果为0,而非system("false")返回的非0值。若要让脚本返回该系统调用的结果,需显式写exit system("false");。
内容的提问来源于stack exchange,提问作者vvch
相关产品推荐
相关产品推荐

