如果使用glob-TCL未找到任何内容,则打印警告

如果使用glob-TCL未找到任何内容,则打印警告,tcl,warnings,message,Tcl,Warnings,Message,我的脚本如下。如果我无法从目录中删除任何内容,我想打印一条警告 当foreach循环找不到任何与$food和$toy组合匹配的文件时,如何在foreach循环中打印警告 foreach value $list { set file1 [ open "$food/$toys/abc.txt"] set list1 [glob -nocomplain -type f /a/$food/$toys/*] puts $file1 [join $list1 \n] close $

我的脚本如下。如果我无法从目录中删除任何内容,我想打印一条警告

当foreach循环找不到任何与$food和$toy组合匹配的文件时,如何在foreach循环中打印警告

foreach value $list {

set file1 [ open "$food/$toys/abc.txt"]

set list1 [glob -nocomplain -type f /a/$food/$toys/*]
puts $file1 [join $list1 \n]

close $file1

}

您还希望捕获
open
中的错误(说到这一点,您需要打开文件进行编写,但您没有这样做),而不仅仅是
glob

比如:

# You don't use value in your posted code. Typo or something?
foreach value $list {
    try {
        set list1 [glob -type f "/a/$food/$toys/*"]
        set file1 [open "$food/$toys/abc.txt" w]
        puts $file1 [join $list1 \n]
        close $file1
    } on error {msg} {
        puts stderr "Error while processing '$value': $msg"
    }
}

将处理这两种情况以及可能引发的任何其他错误。

提示:$list1如果找不到任何匹配的文件,则为空。

另一个提示:如果没有
-nocomplain
[glob]
则在找不到匹配时抛出错误,并且有
[catch]
[try]
来处理错误,你是说不要使用-不要抱怨?你能举例说明如何使用catch吗?我是说有几种方法可以满足你的需要。当我执行上面的命令时,它说的是无效的命令名“try”。我必须使用特殊的tcl版本吗。我正在使用tclsh8.5。