有没有办法在tcl的特定变量中逐个传递所选目录的每个文件(带有扩展名.tcl)?
答案 0 :(得分:3)
做我认为你想做的事情的一种方法是
foreach file [glob -directory $dir *.tcl] {
# do something with the filename $file
}
glob
命令返回与最后一个参数中的模式匹配的文件名列表(在本例中为*.tcl
,这意味着"任何以.tcl"结尾的名称; )。 -directory
选项指定在哪个目录中查找文件。
如果没有与模式匹配的文件,该命令将引发错误。要避免这种情况,只需获取一个空列表,请使用选项-nocomplain
。
foreach
命令采用变量规范,列表(在本例中为文件名列表)和脚本。对于每个项目(或某些情况下的一批项目),将变量设置为项目,对脚本进行一次评估。
文档: foreach, glob, File name conventions supported by Tcl commands
Tcl字符串匹配的语法:
*
匹配零个或多个字符的序列?
匹配单个字符[chars]
匹配字符给出的集合中的单个字符(^ 不否定;范围可以 az )\x
匹配字符 x ,即使该字符是特殊字符(*?[]\
之一)