gpt4 book ai didi

perl - 如果系统命令/反引号中的脚本失败,则主脚本需要退出状态!=0

转载 作者:行者123 更新时间:2023-12-02 01:57:20 26 4
gpt4 key购买 nike

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

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

像这里一样,由于 ckfile.txt 不存在,因此 ` cat/gra/def/ment/ckfile.txt` 会给出一些错误。现在,由于它是脚本中的错误命令,因此脚本应该以 status != 0 退出。(当前,它以 status == 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\n";
exit $stat;

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

关于perl - 如果系统命令/反引号中的脚本失败,则主脚本需要退出状态!=0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69479784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com