2013-08-21 23 views
0

我有一個tcl腳本應該發送一個grep命令到服務器,但只會執行命令,如果我把另一個期望exp_send後立即。期望/ 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 } 
... 

因此,通過實驗,我發現,第一想到如果第二期待語句存在,(同樣,對於第二個想到的命令,關於第一存在)將只exp_send它的命令,即使他們期望同樣的事情,第二個陳述完全沒用。我不確定問題是什麼,看起來完全不合邏輯。有什麼建議麼?

回答

0

您的第一條命令已發送,並且成功接收了結果字符串。但是返回的字符串保存在緩衝區中,直到你調用另一個'expect'。這是緩衝I/O的常見情況。 嘗試沒有exp_send的第二個'expect'。