我的代码是这样的:
...
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
和PlainText1_Plaintext.txt
的有效文件。前两个工作和PlainText1_Plaintext.txt
没有。
基本上,我认为我没有正确使用glob /通配符,但不知道如何。
答案 0 :(得分:0)
这类事情的常见问题是当你得到你想要的错误时,或者当你得到一个需要{{1}返回的列表的命令时}扩展。
如果命令需要扩展列表,则需要使用:
glob
括号前面的<command> {*}[glob ...]
会将结果扩展为多个参数。有时,这需要您迭代结果并一次传递一次:
{*}
当谈到glob本身时,你不清楚foreach filename [glob ...] {
<command> $filename
}
是否可以被你接受。但是,它与模式PlainText1_stuff.txt
匹配。如果不可接受,可能需要PlainText1*
;额外的PlainText1.*
对于此处匹配的内容非常重要。
另外,请考虑使用.
选项-directory
,因为它会让您的代码更清晰(尤其是,如果您位于其中一个允许文件名中包含glob元字符的平台上)。
总的来说,你可能会看到这样的事情:
glob
如果需要,可以使用辅助变量。