我已經看過期望聯機幫助頁和谷歌搜索它,但我還沒有找到什麼-r
預期是。我看到在expect
腳本之前,像這樣使用「-r」在Expect的「expect -r PATTERN」命令中的含義是什麼?
expect -r "\r\n\r\n"
這個選項,但無法弄清它是。有誰知道我在哪裏可以找到這個答案?在此先感謝
我已經看過期望聯機幫助頁和谷歌搜索它,但我還沒有找到什麼-r
預期是。我看到在expect
腳本之前,像這樣使用「-r」在Expect的「expect -r PATTERN」命令中的含義是什麼?
expect -r "\r\n\r\n"
這個選項,但無法弄清它是。有誰知道我在哪裏可以找到這個答案?在此先感謝
當我看到有人使用expect -regexp PATTERN
時,這也使我困惑了一下,因爲在手冊頁中它只提到expect -re PATTERN
。我試過expect -regexp PATTERN
,它確實有效。
在某個時候我下載了期望的source code,並看了看,發現原因。
在源代碼(見函數parse_expect_args()
在expect.c
),則expect
的選項實際上定義如下:
static char *flags[] = {
"-glob", "-regexp", "-exact", "-notransfer", "-nocase",
"-i", "-indices", "-iread", "-timestamp", "-timeout",
"-nobrace", "--", (char *)0
}
然後在函數調用Tcl
的Tcl_GetIndexFromObj(interp, objPtr, tablePtr, msg, flags, indexPtr)
解析命令選項。 Accordint到Tcl_GetIndexFromObj()
的manual:
...如果
objPtr
出現匹配的字符串值是相同的一個在tablePtr
,或字符串如果它是一個非空獨特縮寫對於tablePtr
和TCL_EXACT
標誌中的恰好一個字符串未指定; ...
這裏Expect
電話Tcl_GetIndexFromObj()
與flags = 0
(無TCL_EXACT
),所以記錄-gl
,在手冊頁-re
和-ex
分別-glob
,-regexp
和-exact
實際上。而且,由於只有一個選項-regexp
,從-r
開始,所以-r
只是意味着與-regexp
(和-re
)相同。
我個人建議仍然使用記錄的選項來避免混淆其他人。
哇!哈哈,很多挖!太棒了,非常感謝。 – chromechris
你是'-r'而不是'\ r'或'-re'嗎? – RomanPerekhrest
請添加完整的命令。 – adiesner
是的,它是r。完整的命令是'expect -r'somePattern'' – chromechris