我有这样的代码:
...
proc myProc {first last} {
for { set i $first } { $i <= $last } { incr i } {
set i_cur "PlainText$i"
<command> [glob ./../myDir/${i_cur}*]
}
}
当我运行它时,任何在数字后面没有任何内容的文件都可以正常运行。但如果数字后面有东西,那就没有了。
例如,我有名为的有效文件PlainText0.txt
, PlainText00.txt
, and PlainText1_Plaintext.txt
。前两个工作和PlainText1_Plaintext.txt
没有。
基本上,我认为我没有正确使用全局/通配符,但不知道如何使用。
这类事情的常见问题是当你得到了你想要的错误的全局变量时,或者当你得到了一个需要list由返回glob
扩大了。
如果该命令需要扩展列表,则需要使用:
<command> {*}[glob ...]
That {*}
括号前面将结果扩展为多个参数。有时,这需要您迭代结果并一次传递一个结果:
foreach filename [glob ...] {
<command> $filename
}
当谈到 glob 本身时,您不太清楚是否PlainText1_stuff.txt
你是否可以接受。但是,它与模式相匹配PlainText1*
。如果这是不可接受的,也许你需要PlainText1.*
;额外的.
对于这里匹配的内容很重要。
另外,请考虑使用-directory
选项glob
因为它使您的代码更清晰(尤其如果您使用的平台之一允许在文件名中使用 glob 元字符)。
总的来说,您可能会看到这样的内容:
<command> {*}[glob -directory ../myDir PlainText$i.*]
如果需要,您可以使用辅助变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)