2016-10-19 11 views
-1

私持っている私は上書き

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ファイル が、問題への出力を指示し、古い出力が削除され、新しい出力によって置き換えられfollwoingのbashコードどのように古い出力を保存し、新しい出力を保存することもできますか?

答えて

1
> "out.dat" 

ファイルをゼロサイズに切り詰め、基本的にすべてのコンテンツを削除します。以前の古いファイルを保存したい場合は

あなたはそれを移動することができます。

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

を使用すると、すべての古いファイルを保存したい場合は、あなたがそのようなdateコマンドを使用するなど、合理的に一意の名前で保存することができます:

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

切り捨てがよく、またはコードのあなたの残りの部分は、空を期待するか、それが存在しない場合は、1つを作成するかどうかによっては必要でないかもしれません。

+1

バックアップを取ることなく同じファイルに追加したい場合は、代わりに '>> out.dat'を使うことができます。切り詰めと書込みの代わりに、 '>>'が追加されます。 – Munir

+0

正確には、私のコードは次のとおりです – Rock

+0

あなたのノートをありがとう、私は私の質問にコードセグメントを追加しました。私は 'mv'コマンドを使用しようとしましたが、うまくいきません。 – Rock