覆盖dat文件

时间:2016-10-19 17:46:28

标签: linux bash shell unix

我有以下的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文件 但是当我重新运行代码时,旧的输出被删除并被新的输出取代,我怎样才能保留旧的输出并保存新的输出呢?

1 个答案:

答案 0 :(得分:1)

 > "out.dat"

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

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

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

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

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

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