如何使用tcl查找路径的一部分?
我是tcl的新手。我正在尝试编写一个tcl脚本,它将对树结构中的某些文件执行一些操作,但对所有文件都执行 我的树中有许多以如何使用tcl查找路径的一部分?,tcl,Tcl,我是tcl的新手。我正在尝试编写一个tcl脚本,它将对树结构中的某些文件执行一些操作,但对所有文件都执行 我的树中有许多以.xci结尾的文件。 现在我想过滤我们所有的.gbn文件,除了我的树中包含路径部分“/ps/”的部分(即/src/ps//.xci)中的文件之外 我已经这样做了: foreach xci_file [get_files *.xci] { #if (ps_is_found_in_path_of_${xci_file}) { generate_target
.xci
结尾的文件。
现在我想过滤我们所有的.gbn文件,除了我的树中包含路径部分“/ps/
”的部分(即/src/ps//.xci
)中的文件之外
我已经这样做了:
foreach xci_file [get_files *.xci] {
#if (ps_is_found_in_path_of_${xci_file}) {
generate_target simulation [get_files $xci_file]
}
}
foreach搜索我的项目中的所有文件并返回文件名(包括完整路径)。如何编写if语句以避免目标生成路径包含“/ps/
”的文件
有没有一个好的灵魂可以分享这方面的信息?你想要:
if {"ps" in [file split $xci_file]} {
此处需要引号:expr
(处理if
的第一个参数)
需要引用文字字符串。如果目的是避免,可能应该是
ni
。是的-这就是目的。我忘了上面的“不”字。我改成了“ni”,这似乎奏效了。但是,我有包含“ps”的有效文件名—我真正想要的是过滤掉“/ps/”,以确保我指的是目录ps。我可以像那样添加“/”-字符吗?@Teddy:请看我对这个问题的评论。我认为expr的“in”操作符使用字符串相等,所以expr{ps”in{foo epsilon}
返回false。(我对你删除的细化进行了评论,也许我可以把评论放在这里。)in
操作符用于成员资格;反向运算符为ni
(“不在”)。您不能再添加斜杠,但可以执行[file split[file dirname$xci\u file]]
以避免查看文件名部分。