我在Tcl中有引用问题。我有很长的信号列表,在for循环中我将每一个信号分配给my_sig
,然后解析它。
foreach sig $list_of_sigs {
set my_sig $sig
}
我得到的一个例子是:
set my_sig top.sub.sig[0]
如何在命令中使用my_sig
,以便“[
”和“]
”自动转义?例如,我的命令接受:
my_command -filter signal_bit=="top.sub.sig\[0\]"
谢谢!
答案 0 :(得分:1)
尝试
set my_sig {top.sub.sig[0]}
my_command -filter signal_bit==$my_sig
答案 1 :(得分:1)
答案 2 :(得分:1)
您通常不必这样做,因为除非明确要求,否则Tcl不会重新解释变量的内容。有些东西正在再次扩大价值,你可能应该追逐它,因为它在形式上实际上是不安全的,而且往往与代码相关也很慢。
也就是说,使用string map
添加引用非常容易。只需要引用反斜杠即可。
foreach sig $list_of_sigs {
set my_sig [string map {[ {\[} ] {\]}} $sig]
# ... etc ...
}