chr*_*ris 0 linux options expect
我查看了Expect手册页并用Google搜索了它,但我还没有找到-r期望的内容.我之前看过这个选项
expect -r "\r\n\r\n"
Run Code Online (Sandbox Code Playgroud)
在expect脚本中,但无法弄清楚它是什么.有谁知道我在哪里可以找到这个答案?提前致谢
当我看到有人使用时,这也让我感到困惑,expect -regexp PATTERN因为在手册页中它只提到了expect -re PATTERN.我试过expect -regexp PATTERN,它确实有效.
有一段时间我下载了期望的源代码并看了看原因.
在源代码(见函数parse_expect_args()中expect.c),则expect的选择实际上是定义如下:
static char *flags[] = {
  "-glob", "-regexp",  "-exact", "-notransfer", "-nocase",
  "-i",    "-indices", "-iread", "-timestamp",  "-timeout",
  "-nobrace", "--", (char *)0
}
Run Code Online (Sandbox Code Playgroud)
然后在函数中调用Tcl's Tcl_GetIndexFromObj(interp, objPtr, tablePtr, msg, flags, indexPtr)来解析命令选项.Accordint Tcl_GetIndexFromObj()的手册:
...如果出现匹配
objPtr的字符串值是相同的一个串中tablePtr,或者如果它是一个非空的独特缩写在串中的正好一个tablePtr和TCL_EXACT未指定的标志物; ...
这里Expect呼吁Tcl_GetIndexFromObj()有flags = 0(没有TCL_EXACT),所以记录-gl,-re并-ex在手册页实际上-glob,-regexp和-exact分别.因为只有一个选项-regexp,-r所以-r只是意味着与-regexp(和-re)相同.
我个人建议仍然使用记录的选项,以避免混淆其他人.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           377 次  |  
        
|   最近记录:  |