这个脚本:
puts [exec cvs up *.tcl]
我想cvs更新此文件夹下的所有.tcl文件。
但我总是得到" cvs更新:对* .tcl"错误消息。
我该如何解决这个问题?
非常感谢
答案 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]]
前者更安全。