Tcl Expect/Exp\u Send仅适用于一行中的两个Expect

Tcl Expect/Exp\u Send仅适用于一行中的两个Expect,tcl,expect,Tcl,Expect,我有一个tcl脚本,它应该向服务器发送一个grep命令,但只有在我将另一个expect和exp_send放在后面时,才会执行该命令 set spawn_id [::SshLibrary::connect **.***.**.*** username password] ;#just ssh, essentially set cmd "grep \"$str\" /var/log/syslog/$smtsIp" expect -re $::LinuxLIbrary::prompt { exp_s

我有一个tcl脚本,它应该向服务器发送一个grep命令,但只有在我将另一个expect和exp_send放在后面时,才会执行该命令

set spawn_id [::SshLibrary::connect **.***.**.*** username password] ;#just ssh, essentially 
set cmd "grep \"$str\" /var/log/syslog/$smtsIp"
expect -re $::LinuxLIbrary::prompt { exp_send "$cmd\r"}
expect -re $::LinuxLibrary::prompt { exp_send "echo \" \"\r }
...

因此,通过实验,我发现第一个expect只有在第二个expect语句存在时才会发送它的命令(与第二个expect命令类似,关于第一个expect语句的存在),即使它们期望相同的东西,而第二个语句是完全无用的。我不确定问题是什么,这似乎完全不合逻辑。有什么建议吗?

您的第一个命令已发送,结果字符串已成功接收。但返回的字符串将保留在缓冲区中,直到调用另一个“expect”。这是缓冲I/O的常见情况。 在不发送exp_的情况下尝试第二个'expect'