フォルダ内のすべての一時ファイルを単一のテキストファイルに連結しようとしています。しかし、私はエラーに遭遇し続けます:
if { [catch { exec cat /tmp/new_temp/* >> /tmp/full_temp.txt } msg] }
エラーメッセージ:
-cat: /tmp/new_temp/*: No such file or directory
tclshで同じことを(catchとexecなしで)試してみると、うまくいきます
フォルダ内のすべての一時ファイルを単一のテキストファイルに連結しようとしています。しかし、私はエラーに遭遇し続けます:
if { [catch { exec cat /tmp/new_temp/* >> /tmp/full_temp.txt } msg] }
エラーメッセージ:
-cat: /tmp/new_temp/*: No such file or directory
tclshで同じことを(catchとexecなしで)試してみると、うまくいきます
なぜそのようなひどいアプローチ?Tcl自体を使用して、これらのファイルを連結します。
set out [open /tmp/full_temp.txt w]
fconfigure $out -translation binary
foreach fname [glob -nocomplain -type f "/tmp/new_temp/*"] {
set in [open $fname]
fconfigure $in -translation binary
fcopy $in $out
close $in
}
close $out
Tclはシェルではないため、globパターンを自動的に拡張しません。試す
if { [catch {exec sh -c {cat /tmp/new_temp/* >> /tmp/full_temp.txt}} msg] }
glob
Tclにファイル名拡張を実行させるには、次のコマンドが必要です。
set code [catch [list exec cat {*}[glob /tmp/new_temp/*] >> /tmp/full_temp.txt] msg]
if {$code != 0} {
# handle error
}