我試圖刪除我的程序依賴從文件中讀取信息,然後解釋該信息。我創建了一個Perl命令庫,可以根據需要生成必要的信息。我遇到的一個問題是,Perl有時會調用期望腳本,期望腳本目前設計爲接收文件路徑,打開該文件,讀取信息並使用該信息。如何將Perl數組傳遞給Expect腳本?
相反,我想將Perl數組傳遞給包含所有信息的期望腳本。這裏存在我的問題:我一直在努力弄清楚expect腳本如何處理數組作爲參數並將該參數轉換爲有用的參數。
Perl的例子:
my $expectCmd = "expect.sh 300 $vmIp $vmPort $pass @configInfo";
system($expectCmd);
expect腳本:
set ip [lindex $argv 1]
set port [lindex $argv 2]
set pass [lindex $argv 3]
在這一點上我不知道怎麼@configInfo陣列中的閱讀和使用它。我嘗試了upvar,數組集,for-loops,foreach循環,乞求,懇求和賄賂的各種方法。到目前爲止沒有任何工作。
最終目標是將@configInfo數組一行一行地發送到一個文件。基本上,我想數組的每個索引是文件中的行 - 如果它是Perl的我只想:
foreach my $line (@configInfo) {
print FILE $line;
}
如果有人在傳球陣列體驗到期待腳本,然後拆包其使用的內容我會非常感謝迴應。非常感謝!
您是否嘗試過打印'$ expectCmd'變量並確認其格式正確。數組中的項目可能沒有間隔地相互追加。 – Joshua
嗨@Joshua - 我確信expect命令被調用,並且我確信所有的變量(ip,port和pass)都被正確傳遞。最後一個變量數組是我的問題:我不知道如何正確地傳遞它,或者一旦將它傳遞給expect腳本,如何在expect腳本本身內正確使用數組參數。 –