【发布时间】:2016-05-27 01:40:11
【问题描述】:
我正在尝试消除我的程序对从文件中读取信息然后解释该信息的依赖。我创建了一个 Perl 命令库,可以按需生成必要的信息。我遇到的一个问题是 Perl 有时会调用一个期望脚本,而期望脚本目前被设计为接收文件路径、打开该文件、读取信息然后使用该信息。
相反,我想将一个 Perl 数组传递给包含所有信息的期望脚本。这就是我的问题:我一直在努力弄清楚期望脚本如何将数组作为参数处理并将该参数转换为有用的东西。
Perl 示例:
my $expectCmd = "expect.sh 300 $vmIp $vmPort $pass @configInfo";
system($expectCmd);
期望脚本:
set ip [lindex $argv 1]
set port [lindex $argv 2]
set pass [lindex $argv 3]
此时我不知道如何读取@configInfo 数组并使用它。我尝试过各种 upvar、数组集、for 循环、foreach 循环、乞求、恳求和贿赂的方法。到目前为止没有任何效果。
最终目标是将@configInfo 数组逐行发送到文件中。基本上,我希望数组的每个索引都是文件中的一行 - 如果是 Perl,我会:
foreach my $line (@configInfo) {
print FILE $line;
}
如果有人有将数组传递到期望脚本然后解压缩其内容以供使用的经验,我将非常感谢您的回复。非常感谢!
【问题讨论】:
-
您是否尝试过打印您的
$expectCmd变量并确认其格式正确。数组中的项目可能会在没有空格的情况下相互附加。 -
嗨@Joshua - 我确信expect命令被调用了,我确信所有的变量(ip、端口和pass)都被正确传递了。最后一个变量数组是我的问题:我不知道如何正确传递它,或者,一旦我将它传递给期望脚本,如何在期望脚本本身中正确使用数组参数。