你如何增加从 llength 返回的数字?

How do you increment the number returned from llength?

假设我使用 glob and llength:

捕获目录中的文件数
# For this example, suppose llength returned 4.
set number_of_images [llength [glob -nocomplain -directory $destination_folder -type f *]]

我想使用该数字并根据另一个目录中的文件数量在 foreach 循环中增加它。

foreach file [glob -nocomplain -directory $source_folder -type f *] {
    puts [incr $number_of_images] 

    # I want to start the count at 5, and increment by 1 with each loop. incr fails to 
    # do so, as well as mathfunc::int.
}

根据文档,我的问题是 llength returns 一个字符串:

Treats list as a list and returns a decimal string giving the number of elements in it.

我可以将其转换为 int 并使用吗?

在Tcl 中,一切都是字符串。是的,您可以递增一个包含整数(表示为十进制字符串)的变量。

问题出在您对 incr 的使用上。 incr 命令用于递增一个 变量 保存一个整数,而不是一个整数 value。只需更改您的代码:

    puts [incr $number_of_images] 

...到...

    puts [incr number_of_images]