我已经看过期望联机帮助页和谷歌搜索它,但我还没有找到什么-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