如果系统命令/反引号内的脚本失败,则要求主脚本的退出状态!=0 [英] Require exit status !=0 for the main script if script within the system command/backtick fails

查看:15
本文介绍了如果系统命令/反引号内的脚本失败,则要求主脚本的退出状态!=0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

inter.pl的编码为:

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中执行它,然后在执行后返回。因此,退出状态不等于0将在子xTerm中看到。

但是,我想要的是,当脚本中的任何地方出现错误时,无论是在系统命令内部执行的脚本中,还是在反号或主脚本中,它都应该在那里退出,然后退出状态不等于0。

像这里一样,因为没有ck file.txt,所以`cat/gra/def/ment/ck file.txt`会给出一些错误。现在,因为它是脚本中的一个错误命令,所以脚本应该退出并返回Status!=0。(当前正在退出,状态==0。)

如何实施?

推荐答案

您可以创建一个变量来存储外部命令的状态,然后将其传递给exit$? error variable保持backticks command的状态。

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
";
exit $stat;

在代码开始时将$stat变量设置为0。如果您的代码有多个命令要运行,则在每个命令之后检查退出状态,如果该状态不为零,则只需将$stat设置为1。

这篇关于如果系统命令/反引号内的脚本失败,则要求主脚本的退出状态!=0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆