TCL在字符串中设置特殊字符

TCL在字符串中设置特殊字符,tcl,Tcl,我想在TCL中设置以下错误消息作为变量,并通过传递特殊字符与来自网络交换机的错误消息进行比较 使用[slot/port]或[“portname”]或[slot/*]或[*] 我试过这样做 set x "Use \[slot/port] or \["portname"] or \[slot/\*] or \[\*]." 但我在运行脚本时收到以下消息: 结束引号后的额外字符 执行时 请帮忙。谢谢大家! 如果使用双引号,还必须转义“内部”引号: 或者使用大括号,避免完全逃跑 set x {Use [

我想在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 [*].}

请参阅,数字4和6如果使用双引号,还必须转义“内部”引号:

或者使用大括号,避免完全逃跑

set x {Use [slot/port] or ["portname"] or [slot/*] or [*].}

请看,数字4和6

好的,您可以使用如下方式将其用花括号括起来:

set x {Use [slot/port] or ["portname"] or [slot/] or [].}

或者,您可以使用反斜杠转义特殊字符。

好的,您可以按如下方式将其用花括号括起来:

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对此非常满意。

也将双引号转义到带引号的字符串中。或者使用大括号将字符串分组,而不发生任何命令或变量替换

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对此相当满意