将变量值设置为带有 [] 方括号的字符串

Setting a variable value as string having [] square parentheses

我正在尝试通过我的 tcl 脚本编写一个文件 (file.txt),其中包含以下内容。

$ cat file.txt
create_library_domain TIMING
set_attribute library ./sc9mc.lib [find /libraries -library_domain TIMING]
exit

简单的字符串很好,它们可以被双引号作为变量传递给 put 命令,但是带大括号的字符串不会存储在变量中:[find /libraries -library_domain TIMING] 我尝试使用 \ 转义它但是那对我也不起作用。

代码:

proc rcRun {} {
    type_run
    global rundir ENTRYfilename curDIR typep
    set rc_entry "create_library_domain TIMING"
    set attr "set_attribute library"
    set evt "[find /libraries -library_domain TIMING]"
    set rd "exit"
    set cmd [concat $attr $ENTRYfilename $evt]
    cd $rundir
    set filename rc.cmd 
    set fileId  [open $filename "w"]
    puts $fileId $rc_entry $cmd $rd
    close $fileId
}

请提出解决方案。

越狱两次?

set evt "\\[find /libraries -library_domain TIMING\\]"

如果你想在文件中单独打印单词[find /libraries -library_domain TIMING],那么在使用双引号时左方括号[应该用反斜杠转义一次。或者,您可以改用大括号。

% set evt "\[find /libraries -library_domain TIMING]"
[find /libraries -library_domain TIMING]
% set evt {[find /libraries -library_domain TIMING]}
[find /libraries -library_domain TIMING]
%

注意:我们不需要转义右方括号].