以写入模式打开文件

时间:2011-04-23 21:51:15

标签: bash file shell

我有一个名为a.txt的文件。像

这样的值
1
2
3
...

我想覆盖此文件,但

echo "$var" >> a.txt
echo "$var1" >> a.txt
echo "$var2" >> a.txt
...

只是追加。使用>也没用。如何使用>>进行覆盖? shell脚本中的运算符?

4 个答案:

答案 0 :(得分:4)

您可能希望>用于第一次重定向,>>用于后续重定向:

echo "$var" > a.txt
echo "$var1" >> a.txt
echo "$var2" >> a.txt

答案 1 :(得分:4)

>会截断文件,如果文件存在,则会执行您最初提出的问题。

>>会附加到文件中。

如果要覆盖文件内容(不截断文件),请使用1<>

e.g:

[23:58:27 0 ~/tmp] $ echo foobar >a
[23:58:28 0 ~/tmp] $ cat a
foobar
[23:58:50 0 ~/tmp] $ echo -n bar 1<>a
[23:58:53 0 ~/tmp] $ cat a
barbar

答案 2 :(得分:2)

以何种方式使用&gt;没有用?通过覆盖文件明确地做你想要的,所以使用&gt;对于第一个然后&gt;&gt;追加未来的价值观。

答案 3 :(得分:2)

echo "$var
$var1
$var2" > a.txt

echo -e "$var\n$var1\n$var2" > a.txt