需要在TCL中cat多个文件

问题描述

我想将 2 个文件合并或合并在一起。使用 exec cat 还是 append 更好?

以下是我的 cat 脚本,但似乎不起作用。

set infile [open "$dir/1.txt" w+]

puts $infile "set a 1"
puts $infile "set b 2"

exec /bin/cat "$dir/1.txt $dir2/ABC1.sh" > final.sh

close $infile

解决方法

我敢打赌“似乎不起作用”意味着您只能在 $dir2/ABC1.sh 中看到 final.sh 的内容(或者可能看到您写给 {{1} },并非所有数据)。如果是这样,您就会遇到缓冲问题,尝试在像您这样关闭或刷新 $fir1/1.txt 之前读取 $dir/1.txt。数据尚未写入底层文件。

为了将多个文件连接成一个,而不是依赖于像 infile 这样的外部程序(你如何引用 cat 的参数也可能存在问题......),我会使用来自 tcllib 的 fileutil 模块的各种例程以纯 exec 来完成:

tcl

如果您有大文件并且不想将它们全部保存在内存中(或者不想/无法安装 tcllib),chan copy 也可以:

package require fileutil
fileutil::writeFile final.sh [fileutil::cat -- $dir/1.txt $dir2/ABC1.sh]