我有以下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/