我正在尝试让 for 循环将文本输出到文件 10 次。这是我所拥有的:
for ((i=1;i<=10;i++)); do
echo "Hello World" >testforloop.txt
done
这将输出Hello World
一次到文件testforloop.txt
。如果我不输出到文件,它Hello World
会在屏幕上打印 10 次。
您正在使用>
重定向,它会清除文件的现有内容并将其替换为循环内的命令输出。所以这会清除之前的内容 10 次,每次替换为一行。
如果没有>
或>/dev/tty
,它会进入您的显示器,在那里>
无法擦除任何内容,因此您可以看到所有十个副本。
您可以使用>>
,它仍然会打开文件十次,但每次都会追加(不会清除以前的内容)。不过,这并不是非常有效,并且它保留了以前运行的数据(可能是也可能不是您想要的)。
或者,您可以重定向整个循环一次:
for ... do cmd; done >file
它运行整个循环,输出重定向,>>
只创建一次(或者,打开追加)。
你只是用“>”重定向回声,所以它会覆盖。您需要的是使用“>>”运算符附加。请执行下列操作:
for ((i=1;i<=10;i++)) ; do echo "Hello World" >> testforloop.txt ; done
以下将解决您的问题:
>>
由于命令中已经提到的原因,您应该尝试操作员echo -e
使用选项 '\n' - 带有退格解释器的新行 '-e' 处理使用它的新行。
这样做:
for ((i=1;i<=10;i++)) ; do echo -e "Hello World" >> testforloop.txt ; done
猫命令:
cat testforloop.txt
输出:
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
或者,您可以尝试:
cat -n testforloop.txt
输出:
1 Hello World
2 Hello World
3 Hello World
4 Hello World
5 Hello World
6 Hello World
7 Hello World
8 Hello World
9 Hello World
10 Hello World
你重写 testforloop.txt 十次。如果你做了
对于 ((i=1;i<=10;i++)) ; 做 echo "Hello World" > testforloop(i).txt ; 完毕
其中 i 是来自 for 循环的 int。我不确定您使用的编程语言。