Shell 如何将$variable回显到循环中的文本文件中

Shell 如何将$variable回显到循环中的文本文件中,shell,Shell,我正在编写一个shell脚本,其中有一个循环。当循环通过时,将不同的值分配给变量i。我想将每次循环运行时分配给I的所有值回显到文本文件中 我现在正在做的是: echo " $i " > fail 但这只会得到分配给i的最后一个值 Put echo " $i " >> fail 在循环中。Put echo " $i " >> fail 在循环中。如果使用 echo " $i" >> fail 它会将其附加到文件中。如果您使用 echo " $i"

我正在编写一个shell脚本,其中有一个循环。当循环通过时,将不同的值分配给变量
i
。我想将每次循环运行时分配给
I
的所有值回显到文本文件中

我现在正在做的是:

echo " $i " > fail
但这只会得到分配给
i
的最后一个值

Put

echo " $i " >> fail
在循环中。

Put

echo " $i " >> fail
在循环中。

如果使用

echo " $i" >> fail
它会将其附加到文件中。

如果您使用

echo " $i" >> fail
它将把它附加到文件中。

echo“$i”>失败将写入文件(覆盖)

echo“$i”>>失败
将附加到现有文件

echo“$i”>失败
将写入文件(覆盖)


echo“$i”>>fail
将附加到现有文件

而不是将单个
echo
重定向到您的文件,而是将整个循环重定向到该文件。这将大大提高效率,并且在循环启动时只截断文件一次

for i in "${whatever[@]}"; do
   echo "  $i"
done >fail

当然,如果您根本不想截断文件,可以在同一位置使用
>fail

而不是将单个
echo
重定向到您的文件,而是将整个循环重定向到该文件。这将大大提高效率,并且在循环启动时只截断文件一次

for i in "${whatever[@]}"; do
   echo "  $i"
done >fail

如果您根本不想截断文件,当然,您可以在同一位置使用
>fail

>fail是他正在做的,每次都会覆盖文件。>fail是他正在做的,每次都会覆盖文件。实际上,将重定向放在循环之后通常更有意义。正在放置
…命令…>>file
在循环中,每次执行循环时都会重新打开文件,这对性能/效率有明显的影响。实际上,将重定向放在循环之后通常更有意义。正在放置
…命令…>>文件
在循环中,每次执行循环时都会重新打开文件,这会对性能/效率产生明显的影响。可以肯定的是,如果每次只想向文件写入一行,则重新打开文件的效率会降低。Works,可以肯定,但是每次只想写一行就重新打开一个文件是不必要的低效。