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

Ask*_*nsP 0 perl system backticks exitstatus

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

ike*_*ami 5

如果您希望程序具有非零退出状态,则需要替换 (无用) exit 0;.

my $var1=`cat /gra/def/ment/ckfile.txt`;
exit 1 if $?;
Run Code Online (Sandbox Code Playgroud)

或者

my $var1=`cat /gra/def/ment/ckfile.txt`;
die("Can't spawn child: $!\n") if $? == -1;
die("Child killed by signal ".( $? & 0x7F )."\n") if $? & 0x7F;
die("Child exited with error ".( $? >> 8 )."\n") if $? >> 8;
Run Code Online (Sandbox Code Playgroud)