【发布时间】:2020-06-24 00:56:41
【问题描述】:
当我们通过“系统”调用命令时,如何正确捕获退出代码?从下面的测试用例中,我始终捕获“-1”,对于 code1 的期望是“0”,对于 code2 的期望是“1”。
test1.pl
use feature qw(say);
use strict;
my $code = system("./test2.pl 0");
say "code1 = $code";
system("./test2.pl 0");
say "code1' = $?";
$code = system("./test2.pl 1");
say "code2 = $code";
system("./test2.pl 1");
say "code2' = $?";
test2.pl
use feature qw(say);
use strict;
say "arg = @ARGV[0]";
my $exit_code = @ARGV[0];
say "this is a dummy script which exit with $exit_code";
exit $exit_code;
输出:
% ./project_r/test.pl
code1 = -1
code1' = -1
code2 = -1
code2' = -1
【问题讨论】:
-
% ./project_r/test.pl code1 = -1 code1' = -1 code2 = -1 code2' = -1
-
我在 csh 中运行 perl 脚本
-
Re "我在 csh 中运行 perl 脚本",无关紧要。
system始终使用/bin/sh(Windows 除外),或者当它可以解析命令本身时根本不使用 shell(就像你的情况一样)。
标签: perl