1

このスクリプトの場合:

puts [exec cvs up *.tcl]

このフォルダの下にあるすべての .tcl ファイルを cvs updtae したいです。

しかし、常に「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 にグロビングを実行させたくない - シェルで実行させたい。これを試して

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 に答える