在 tcl 中删除文件时文件名太长错误

File name too long error while deleting files in tcl

我正在尝试删除带有 .来自 tcl 脚本的 vcd 扩展名。但是我收到文件名太长的错误。我试过了puts [file delete [glob *.vcd]]。正确的做法是什么?

问题在于

file delete [glob *.vcd]

没有按照您的想法进行评估。 glob 扩展得太晚了,整个结果(所有文件一起)被视为一个文件。如果您有大量文件,那将导致该错误。

今天我想你可以使用:

file delete {*}[glob *.vcd]

立即扩展。如果这不起作用(可能是旧版本的 TCL),我曾经用 eval file delete ... 来做到这一点。另外,puts 在这里没用,file delete.

没有返回任何内容

评论中有些讨论

eval file delete [glob stuff*]

对于奇怪的东西是安全的,比如名为 "rm -rf ~;" 的文件(是的,合法的)。答案是肯定的,像 ; 这样的奇怪字符在从 glob 返回并通过时会被转义,所以 no 很少(永远不会说永远)担心奇怪的注入就这样。