我有以下的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文件 但是当我重新运行代码时,旧的输出被删除并被新的输出取代,我怎样才能保留旧的输出并保存新的输出呢?
答案 0 :(得分:1)
> "out.dat"
将文件截断为零大小,基本上删除了所有内容。
如果您想保留以前的旧文件,可以移动它:
mv out.dat out.dat.old
> "out.dat"
如果要保留所有旧文件,可以使用合理唯一的名称保存它们,例如使用date
命令:
mv out.dat out.dat.old.$(date +%s%2N)
> "out.dat"
截断可能是必要的,也可能不是必需的,这取决于你的其余代码是否需要为空,或者如果它不存在则创建一个。