我正在尝试删除文件。来自tcl脚本的vcd扩展。但我得文件名太长错误。我试过了puts [file delete [glob *.vcd]]
。这样做的正确方法是什么?
答案 0 :(得分:5)
问题在于
file delete [glob *.vcd]
不会评估你的想法。 glob太晚了,整个结果(所有文件在一起)被认为是一个文件。如果您有大量文件,则会导致该错误。
今天我想你可以使用:
file delete {*}[glob *.vcd]
立即扩展。我以前用eval file delete ...
执行此操作,如果它不起作用(可能是旧版本的TCL)。此外,此处puts
无效,file delete
无法返回任何内容。
评论中有一些讨论是否
eval file delete [glob stuff*]
对于名为"rm -rf ~;"
的文件(是的,合法的)等奇怪的东西是安全的。答案是肯定的,像;
这样的奇怪字符在从glob
返回时被转义并被传递,因此对于像这样的奇怪注入,存在 no 小(从不说永不)担心。