将循环结果存储在 sh 的 shell 变量中

store results of a loop in a shell variable in sh

我有几个嵌套循环在多次迭代中生成相同的数据。

我想将来自内部循环之一的数据保存在 shell 变量中。

有没有一种简单的方法可以将循环的输出重定向到变量,而不修改循环本身?

循环(forwhileuntil)就像其他命令一样是一个命令。您可以使用命令替换捕获其输出。

$ foo=$(for x in 1 2 3; do echo "Number $x"; done)
$ echo "$foo"
Number 1
Number 2
Number 3

但是,如果您的意思是像重定向一样重定向到文件:

for x in 1 2 3; do
    echo "Number $x"
done > somefile.txt
foo=$(cat somefile.txt)

然后事情变得有点棘手。您不能直接写入变量,但可以说最简单的解决方法是上面的方法,它首先将输出写入文件,然后将文件读回变量。