我的tcl脚本中有这个命令
file delete {*}[glob -nocomplain /tmp/*.list]
删除/tmp
目录中扩展名为.list
的文件。使用tclsh filename
运行它时工作正常。
但是当我编译一个tcl独立应用程序(The Simplest Steps to Converting TCL TK to a Stand Alone Application)时,它会抛出一个错误,说它是无效命令。
有什么想法吗?
答案 0 :(得分:1)
在Tcl 8.5中添加了{*}
语法。鉴于错误,您的独立版本可能较旧。您应该将其升级到8.5或8.6,或者可以使用向后兼容的等效项替换问题命令:
eval [linsert [glob -nocomplain /tmp/*.list] 0 file delete]]
linsert
确保glob命令的输出是一个正确形成的列表,前面加前缀file delete
,这样在列表上调用eval
将导致调用{{ 1}}包含所有文件名,不评估文件名本身中的任何内容。
此类问题是添加扩展语法(file delete
)的原因。