我正在尝试通过我的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
}
请提出解决方案。
答案 0 :(得分:3)
如果您想在文件中单独打印单词[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]
%
注意:我们不需要越过右方括号]
。
答案 1 :(得分:0)
逃脱两次?
set evt "\\\[find /libraries -library_domain TIMING\\\]"