我知道硬括号[
,]
在expect "..."
字符串中使用时需要三个反斜杠转义,所以我expect "blah blah \\\[herp derp\\\]"
用来准确地将这些字符传达给expect
I/O 检查器,但还有哪些其他字符也需要转义?管道?括弧????
这里发生了两件事:
Tcl[...]
用作“命令替换”语法(参见https://tcl.tk/man/tcl8.6/TclCmd/Tcl.htm规则 7)。这就像 shell 脚本中的反引号。在双引号内,执行命令替换。
expect
命令的默认模式匹配是“glob”模式。Glob 模式记录在此处:https :
//tcl.tk/man/tcl8.6/TclCmd/string.htm#M35
方括号是 glob 模式的特殊符号。
因此,首先您需要保护双引号内的方括号以防止命令替换。然后,如果要将它们视为文字字符,则需要再次对它们进行转义。
您可以通过以下方式减少反斜杠:
使用非插值引号:在 Tcl 中{braces}
不是"quotes"
.
选择不同的模式类型:如果这是您要匹配的文字字符串,请使用该-ex
选项表示您想要“完全”匹配。
因此,你想要这个:
expect -ex {blah blah [herp derp]}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4406 次 |
最近记录: |