小编Ask*_*nsP的帖子

如果系统命令/反引号中的脚本失败,则主脚本需要退出状态!=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;
Run Code Online (Sandbox Code Playgroud)

当我执行 inter.pl ( perl inter.pl) 并检查退出状态时,我将其视为 0。我知道它显示为 0 的原因,因为它是一个反引号,在子 xterm 中执行它,然后执行后返回。因此,在子 xterm 中会看到退出状态不等于 0。

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

像这里一样,由于 ckfile.txt 不存在,因此 ` cat /gra/def/ment/ckfile.txt` 会给出一些错误。现在,由于它是脚本中的错误命令,因此脚本应以 status != 0 退出。(当前,它以 status == 0 退出。)

如何实施?

perl system backticks

2
推荐指数
1
解决办法
186
查看次数

当系统命令内的脚本运行不顺利时,需要退出状态!=0

inter.pl 的代码是:

\n
use strict;\nuse warnings;\n\nmy $var1=`cat /gra/def/ment/ckfile.txt`;  #ckfile.txt doesn't exist\nprint "Hello World";\nexit 0;\n
Run Code Online (Sandbox Code Playgroud)\n

ext.pl的代码

\n
my $rc = system ("perl inter.pl");\nprint "$rc is rc\\n";\n
Run Code Online (Sandbox Code Playgroud)\n

在这里,当我运行“perl ext.pl”时,$rc 为 0。

\n

虽然 inter.pl (/gra/def/ment/ckfile.txt) 内的文件不存在\xe2\x80\x99t ,但我得到的 $rc 为 0。

\n

在同一场景中,我希望 $rc 为 != 0 (在某种程度上,它应该是一个错误,因为文件 ckfile.txt 不存在)。

\n

注意: 我无法在 inter.pl 中进行任何修改

\n

如何实施?

\n

提前致谢。

\n

perl system backticks exitstatus

0
推荐指数
1
解决办法
255
查看次数

标签 统计

backticks ×2

perl ×2

system ×2

exitstatus ×1