我有一个名为.txt.的文件,其值类似
1
2
3
...
我想覆盖这个文件,但是
echo "$var" >> a.txt
echo "$var1" >> a.txt
echo "$var2" >> a.txt
...
只是追加。使用>也没用。如何在shell脚本中使用>>运算符进行覆盖?
您可能希望将>
用于第一次重定向,将>>
用于后续重定向:
echo "$var" > a.txt
echo "$var1" >> a.txt
echo "$var2" >> a.txt
>
会截断文件(如果存在(,并按照最初的要求执行操作。
如果文件存在,则>>
会附加到该文件。
如果您想覆盖文件的内容(而不是截断它(,请使用1<>
例如:
[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
在哪些方面使用>没有用处?这通过覆盖文件来显式地完成您想要的操作,因此使用>作为第一个,然后使用>>来附加未来的值。
echo "$var
$var1
$var2" > a.txt
或
echo -e "$varn$var1n$var2" > a.txt