このスクリプトの場合:
puts [exec cvs up *.tcl]
このフォルダの下にあるすべての .tcl ファイルを cvs updtae したいです。
しかし、常に「cvs update: Nothing known about *.tcl」というエラー メッセージが表示されます。
どうすればこれを解決できますか?
どうもありがとう
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"
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
}
Tcl 8.5 を使用している場合は、リスト展開構文を使用します。exec cvs up {*}[glob *.tcl]
古い Tcl を使用している場合:eval [linsert [glob *.tcl] 0 exec cvs up]
またはeval [concat exec cvs up [glob *.tcl]]
前者の方が安全です。