关于在tcl中执行* .file

时间:2011-10-25 14:26:41

标签: cvs tcl

这个脚本:

puts [exec cvs up *.tcl]

我想cvs更新此文件夹下的所有.tcl文件。

但我总是得到" cvs更新:对* .tcl"错误消息。

我该如何解决这个问题?

非常感谢

3 个答案:

答案 0 :(得分:0)

TCL exec没有全局。试试puts [exec cvs up [glob *.tcl]]

编辑:那不太有用;看到评论。以下方法可行:

# These two don't work with spaces in the names:
exec echo [glob *.tcl] | xargs cvs up
exec bash -c "cvs up [glob *.tcl]"
# Use this instead:
exec bash -c "cvs up *.c"

答案 1 :(得分:0)

您不希望TCL执行通配 - 您希望它在shell中发生。试试这个

set exec_call "cvs up *.tcl"
set caught [catch {eval exec -keepnewline $exec_call } result]
if { $caught } {
  #handle the error stored in $result
} else {
  #handle success
}

答案 2 :(得分:0)

如果您有Tcl 8.5,请使用列表展开语法:exec cvs up {*}[glob *.tcl]

如果你有一个较旧的Tcl:eval [linsert [glob *.tcl] 0 exec cvs up]
eval [concat exec cvs up [glob *.tcl]]
前者更安全。