2011-04-23 71 views
-1

我有一个名为a.txt的文件。与像以写入模式打开文件

1 
2 
3 
... 

值我想改写这个文件,但

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

只是追加。使用>也没​​有用。如何在shell脚本中使用>>操作符进行覆盖?

+1

你能更具体关于为什么“使用>无用”?它是否覆盖,正如你所要求的? – 2011-04-23 21:52:26

+0

echo“$ var”> a.txt echo“$ var1”> a.txt echo“$ var2”> a.txt当我使用这个文件时只有$ var。 – thetux4 2011-04-23 21:52:55

+0

echo“$ var”> a.txt应该做的工作尝试 – Ibu 2011-04-23 21:56:17

回答

4

您可能需要使用>第一个重定向和>>后续重定向:

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

以什么方式使用>没用?通过覆盖文件明确做到了你想要的,所以使用>作为第一个,然后使用>>来附加未来的值。

3

>截断该文件,如果它存在,并且会做什么您最初问。

>>如果存在,则附加到该文件。

如果你想覆盖文件的内容(不截断它),使用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 
2
echo "$var 
$var1 
$var2" > a.txt 

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