星期日, 9月 04, 2011

Tera Term Macro 的一個小陷阱

Tera Term 的 Macro 實在很好用, 不過我在使用時遇到了一個小陷阱, 如果你啟用了 local echo (不論是透過 Terminal Setup 或是 setecho=1 指令), 都會讓 local echo 的內容變成 waitln 等等待指令收到的第一行資料, 如果想等待的字串剛好與 local echo 回來的內容相仿, 就可能會發生錯誤。以底下這個範例來說:

setecho 1
timeout= 10

sendln 'CONNECT'
waitln 'HELLO''CONNECT'

if result = 1 then
	messagebox '收到 Hello' 'Info'
elseif result = 2 then
	messagebox '收到 connect' 'Info'
endif

end

原本預期能夠區分收到的字串是 'HELLO' 還是 'CONNECT', 但實際執行時會因為 local echo 回來 'CONNECT' 的關係, if 判斷永遠都是收到 'CONNECT', 即便遠端真的有回應 'HELLO' 也沒有用。如果一定需要 local echo, 那麼可以先執行 recvln 指令略過 local echo 回來的資料避免這個問題。

沒有留言: