如何将目录中的第一个文件设置为 TCL 中的变量?

How do I set my first file in a directory to a variable in TCL?

我想将我目录中的第一个文件设置为一个变量,我该怎么做?

这是我目前尝试过的方法:

   set files [glob "./programming/.business_files/*.txt"]
   set first_file $files[0]

你的 glob 行是正确的,但顺序不确定(这是 OS 系统调用吐出的任何内容,那些保证 nothing 关于一般顺序)。因此,您可能需要 lsort 文件名列表。为此,强烈建议使用 -dictionary 选项;它产生用户通常认为是文件名自然顺序的顺序。

set files [lsort -dictionary [glob "./programming/.business_files/*.txt"]]

然后你可以用 lindex 得到第一个(因为 Tcl 使用 [] 进行命令替换,而不是索引)。

set first_file [lindex $files 0]

如果您想(出于某种原因)保留数组方法,一个不太理想的解决方案是:

set n 0
foreach file [lsort -dictionary [glob "./programming/.business_files/*.txt"]] {
    set files($n) $file
    incr n
}

set first_file $files(0)

也就是说,上面的 lindex 解决方案是最干净的。

再见