我在寫一個腳本來將數據寫入文件。腳本是附加到linux/unix中的文件而不是覆蓋
for i in {1..10..2}
do
echo $i > tot.txt
done
但是每次tot.txt
被覆蓋。如何追加而不覆蓋?謝謝
我在寫一個腳本來將數據寫入文件。腳本是附加到linux/unix中的文件而不是覆蓋
for i in {1..10..2}
do
echo $i > tot.txt
done
但是每次tot.txt
被覆蓋。如何追加而不覆蓋?謝謝
您需要使用done
後重定向一次:
for i in {1..10..2}
do
echo $i
done > tot.txt
cat tot.txt
1
3
5
7
9
PS:如果你已經在tot.txt
一些內容,那麼你可以done
後使用>> tot.txt
。
使用>>代替>追加到文件末尾。
這有效,但將其放入循環內效率非常低 - 每次它想要將文件追加到其中時,它都會重新打開該文件。 –
@ CharlesDuffy-我同意你的意見,但是,只是提供了一個快速解決方案。 anubhava已經給出了最好的解決方案。 –
for i in {1..10..2}
do
echo $i >> tot.txt
done
不必要的低效率,因爲它在每次迭代中重新打開文件一次。因此,這比anubhava已經給出的解決方案要差得多。 –
改爲使用'printf'%s \ n'{1..10..2}> tot.txt'。 –
@TomFenech如果你打算這麼做,爲什麼不使用'seq'? –
'seq'有什麼了不起的?這是一個獨立的過程,與內置操作相反,完全不是標準。如果你使用bash(大概是OP),那麼我的建議是完全有效的。它還帶有額外的好處,您可以自定義每行的格式:) –