我在“file copy”tcl命令中有一个查询。我尝试将所有文件存储到列表中并在我的命令中使用它。但是tcl没有识别那些文件。
例如:
Files are abc.log , foo.log , bar.log
如果这些文件附加到列表中,请说list_file,如果我在命令中替换list_file
lappend list_file abc.log foo.log bar.log
file mkdir ../../abc
file copy -- $list_file ../../abc
我收到错误消息“错误复制,没有文件或目录”。如果我通过直接指定文件名(而不是列表)来尝试相同的操作。请指导我这个
答案 0 :(得分:2)
详细说明@ evil-otto的答案......
{*}
仅在Tcl 8.5之后可用;对于早期版本,可以使用eval
或多次调用。
使用eval
构建命令:
set cmd [list file copy --]
lappend cmd abc.log foo.log bar.log ../../abc
eval $cmd
(阅读this以了解在创建eval
uated命令时必须使用列表的原因。)
多次调用(不费脑子):
foreach fname $list_file {
file copy -- $fname ../../abc
}
答案 1 :(得分:1)
必须扩展传递给file copy
的列表。
file copy -- {*}$list_file ../../abc