我在写一个脚本来将数据写入文件。脚本是附加到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),那么我的建议是完全有效的。它还带有额外的好处,您可以自定义每行的格式:) –