Code of inter.pl
is:
use strict;
use warnings;
my $var1=`cat /gra/def/ment/ckfile.txt`; #ckfile.txt doesn't exist
print "Hello World";
exit 0;
当我执行 inter.pl ( perl inter.pl) 并检查退出状态时,我将其视为 0。我知道它显示为 0 的原因,因为它是一个反引号,在子 xterm 中执行它,然后执行后返回。因此,在子 xterm 中会看到退出状态不等于 0。
但是,我想要的是,当脚本中的任何地方出现任何问题时,无论是在系统命令内执行的脚本内还是反引号内或在主脚本中,它应该在那里退出,然后退出状态不等于 0。
像这里一样,由于 ckfile.txt 不存在,因此 ` cat /gra/def/ment/ckfile.txt` 会给出一些错误。现在,由于它是脚本中的错误命令,因此脚本应以 status != 0 退出。(当前,它以 status == 0 退出。)
如何实施?
您可以创建一个变量来存储外部命令的状态,然后将其传递给exit https://perldoc.perl.org/functions/exit. The $?误差变量 https://perldoc.perl.org/perlvar#Error-Variables持有的状态反引号命令 https://perldoc.perl.org/functions/qx.
use strict;
use warnings;
my $stat = 0;
my $var1=`cat /gra/def/ment/ckfile.txt`; #ckfile.txt doesn't exist
$stat = 1 if $?;
print "Hello World\n";
exit $stat;
您设置了$stat
在代码开始处将变量设置为 0。如果您的代码要运行多个命令,则在每个命令后检查退出状态,如果它非零,则只需继续设置$stat
to 1.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)