我有一个exp脚本-script.exp来输入名称和密码。它调用test.sh文件,如下所示。
set timeout -1
spawn ./test.sh -create
match_max 100000
expect -exact "Enter the name: "
send -- "abcd\r"
expect -exact "\r
Please confirm password: "
send -- "xxy\r"
expect -exact "\r
expect eof
它给我一个期望窗口的输出 - "成功输入名称" 如果有一些问题,它会抛出异常或错误消息。
我在Perl文件中运行此期望脚本 - 如下所示
$cmd="expect script.exp";
system($cmd);
$outputfromexp=?
运行脚本后,我需要在Perl控制台上输出 exp的失败或传递状态。
我该怎么做?请帮帮我。
我尝试按照Perl脚本中的建议进行调用 -
use strict;
use warnings;
sub sysrun {
my ($command) ="expect script.exp";
my $ret_code;
$ret_code = system("$command");
if ( $ret_code == 0 ) {
# Job suceeded
$ret_code = 1;
}
else {
# Job Failed
$ret_code = 0;
}
return ($ret_code);
}
my $ret_code=sysrun();
print "reuturmsfg- $ret_code\n";
但它没有打印 - 只是reuturmsfg-。
我做了改动 -
my $ret_code=sysrun();
它给我0和1返回代码。
答案 0 :(得分:0)
如果我理解正确,请获取您想要的返回代码:
system($cmd);
my $ret_code = $?;
从执行中获取STDOUT输出:
my @out = `$cmd`;
my $ret_code = $?;
我强烈建议您在代码中使用严格和警告。