2013-09-21 65 views
2

誰能解釋關於預計

之間

expect_out(buffer) 

expect_out(0,string) 
區別expect_out(緩衝)一般來說,我更喜歡使用 expect_out(buffer)

什麼是第二個,我們什麼時候可以使用它?

請問能解釋一下嗎?

回答

6

你可能想看看manpage

我引用的相關部分:

在匹配模式(或EOF或full_buffer),任何匹配和以前無法比擬的輸出保存在變量expect_out(buffer)中。最多9個正則表達式子字符串匹配保存在變量expect_out(1,string)expect_out(9,string)之間。如果在模式之前使用-indices標誌,則10個字符串的開始和結束索引(以適合於lrange的形式)存儲在變量expect_out(X,start)expect_out(X,end)中,其中X是數字,對應於緩衝區中的子串位置。 0指的是匹配整個模式的字符串,併爲glob模式和正則表達式模式生成。例如,如果一個進程已經產生的"abcdefgh\n"輸出,結果:

expect "cd"

是因爲如果下面的語句已執行:

set expect_out(0,string) cd 
set expect_out(buffer) abcd

"efgh\n"留在輸出緩衝器中。如果一個進程產生的輸出"abbbcabkkkka\n",結果:

expect -indices -re "b(b*).*(k+)"

是因爲如果下面的語句已執行:

set expect_out(0,start) 1 
set expect_out(0,end) 10 
set expect_out(0,string) bbbcabkkkk 
set expect_out(1,start) 2 
set expect_out(1,end) 3 
set expect_out(1,string) bb 
set expect_out(2,start) 10 
set expect_out(2,end) 10 
set expect_out(2,string) k 
set expect_out(buffer) abbbcabkkkk

你可以看到如何expect_out(0,string)expect_out(buffer)包含不同的字符串。