期待Perl控制台上的脚本输出

时间:2015-02-26 03:37:40

标签: perl expect

我有一个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返回代码。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,请获取您想要的返回代码:

system($cmd);
my $ret_code = $?;

从执行中获取STDOUT输出:

my @out = `$cmd`;
my $ret_code = $?;

我强烈建议您在代码中使用严格和警告。