仅在while循环在shell脚本中完成后才覆盖文件

时间:2014-03-07 08:13:03

标签: shell file-io while-loop

在我的shell脚本中,我在输出文件中写入while循环的结果,因此输出文件如下所示:

    23
    34
    45
    35

但是当我使用>而不是>>我只得到最后一个数字,因为之前的每个数字都会被覆盖,而我首先想要总结所有这些数字,然后才覆盖该文件,以便第二次使用新数字运行shell脚本。 我想知道是否有办法做到这一点。

1 个答案:

答案 0 :(得分:0)

您可以通过将结果存储在数组x []

中来执行此类操作
x=($(for i in {1..4}; do echo $i; ((j+=i));done;echo $j))
echo ${x[@]}
1 2 3 4 10

然后,您可以使用保存的输出将您想要的任何内容写入文件,以生成文件的内容。

备注:

在最简单的情况下,数组的工作方式如下:

x=(1 2 3 4)
echo ${x[@]}
1 2 3 4

我将循环控制变量$i加到变量$j

x=($(xyz))创建一个数组x[],其元素设置为运行命令xyz

的结果

{1..4}只为一个包含4次迭代的循环创建一个简单的数字列表

echo ${x[@]}打印数组x[]

的全部内容

我将添加的结果存储在数组的最后一个元素中。