如何使“expect”程序的发送命令从文件中读取并使用每一行作为参数。
我想在expect程序中使用类似循环的结构,如下所示(注意: - while循环是虚构的。)
spawn /my/program
expect {
-re EBtxjjmEcQTxc0SLd4TdXxjUduxCOLZBwEme2Z.*password: {
while read_line in FILE;
do
send $read-line;
done
}
如何使用“expect”
编程while循环部分等效项答案 0 :(得分:4)
请注意,在您的问题中,您错过了一个大括号,并且您错误输入了变量名称(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"
}
}
}