如何使“expect”程序的发送命令从文件中读取并使用每一行作为参数。
我想在 expect 程序中使用类似循环的结构,它可能如下所示(注意:- while 循环是虚构的。)
spawn /my/program
expect {
-re EBtxjjmEcQTxc0SLd4TdXxjUduxCOLZBwEme2Z.*password: {
while read_line in FILE;
do
send $read-line;
done
}
如何使用“expect”编写等效的 while 循环部分
最佳答案
请注意,在您的问题中,您缺少一个大括号,并且您输入了错误的变量名称(read_line
和 read-line
)
Expect 是一个 Tcl 扩展,因此您拥有所有 Tcl commands任你支配
spawn /my/program
expect {
-re EBtxjjmEcQTxc0SLd4TdXxjUduxCOLZBwEme2Z.*password: {
set fh [open FILE r]
while {[gets $fh read_line] != -1} {
send "$read_line\r"
}
close $fh
}
}
如果安装 tcllib , 你可以这样做
package require fileutil
spawn /my/program
expect {
-re EBtxjjmEcQTxc0SLd4TdXxjUduxCOLZBwEme2Z.*password: {
fileutil::foreachLine read_line FILE {
send "$read_line\r"
}
}
}
关于linux - 期望程序从文件发送命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14041717/