1

对于这个脚本:

puts [exec cvs up *.tcl]

我想 cvs updtae 这个文件夹下的所有 .tcl 文件。

但我总是收到“cvs update: nothing known about *.tcl”错误信息。

我该如何解决这个问题?

非常感谢

4

3 回答 3

0

TCLexec不通配符。尝试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"
于 2011-10-25T14:57:09.530 回答
0

您不希望 TCL 进行 globbing - 您希望它发生在 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
}
于 2011-10-25T15:37:25.947 回答
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]]
前者更安全。

于 2011-10-25T20:10:36.413 回答