我想在 TCL 中将以下错误消息设置为变量,并与来自网络交换机的错误消息进行比较,绕过特殊字符
使用 [slot/port] 或 ["portname"] 或 [slot/*] 或 [*]。
我试过这样
set x "Use \[slot/port] or \["portname"] or \[slot/\*] or \[\*]."
但我在运行我的脚本时收到以下消息:
执行时关闭引号后的额外字符
请帮忙。谢谢!
我想在 TCL 中将以下错误消息设置为变量,并与来自网络交换机的错误消息进行比较,绕过特殊字符
使用 [slot/port] 或 ["portname"] 或 [slot/*] 或 [*]。
我试过这样
set x "Use \[slot/port] or \["portname"] or \[slot/\*] or \[\*]."
但我在运行我的脚本时收到以下消息:
执行时关闭引号后的额外字符
请帮忙。谢谢!
如果您使用双引号,您还必须转义“内部”引号:
set x "Use \[slot/port] or \[\"portname\"] or \[slot/*] or \[*]."
或者使用大括号并避免完全转义
set x {Use [slot/port] or ["portname"] or [slot/*] or [*].}
参见Tcl 的 12 条语法规则,数字 4 和 6
好吧,您可以使用大括号将其包裹起来,如下所示:
set x {Use [slot/port] or ["portname"] or [slot/] or [].}
或者,您可以使用反斜杠转义特殊字符。
转义引用字符串中的双引号。或者使用花括号对字符串进行分组,而不发生任何命令或变量替换。
set s {Use [slot/port] or ["portname"] or [slot/*] or [*].}
puts $s
set s "Use \[slot/port\] or \[\"portname\"\] or \[slot/*\] or \[*\]."
puts $s
您需要继续阅读有关引用的文档,直到您理解为什么这没问题并且您的示例被破坏,否则您将在脚本中遇到无穷无尽的问题。
请注意,在 stackoverflow 上实现的代码着色会很差地显示花括号版本。然而,Tcl 对此非常满意。