我有以下bash代码

declare -A matrix
num_rows=6
num_columns=1
for ((i=1;i<=num_rows;i++)) do
for ((j=1;j<=num_columns;j++)) do
if [[ i -eq 1 ]]; then
matrix[$i,$j]= echo $i
else
matrix[$i,$j]= echo $j
fi
done
done  >> out.dat


此代码将输出定向到dat文件
但是问题是,当我重新运行代码时,旧的输出将被删除,并由新的输出替换,如何保留旧的输出并保存新的输出呢?

最佳答案

 > "out.dat"


将文件截断为零大小,实际上删除了所有内容。

如果要保留以前的旧文件,可以移动它:

mv out.dat out.dat.old
> "out.dat"


如果要保留所有旧文件,可以使用合理唯一的名称来保存它们,例如使用date命令:

mv out.dat out.dat.old.$(date +%s%2N)
> "out.dat"


截断可能是必需的,也可能不是必需的,这取决于您的其余代码是否期望为空或如果不存在则创建一个。

关于linux - 覆盖dat文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40138245/

10-13 05:53