我有几个嵌套循环,可以在多次迭代中生成相同的数据。
我想从shell变量中的一个内部循环中保存这些数据。
是否有一种简单的方法可以将输出从循环重定向到变量,而无需修改循环本身?
答案 0 :(得分:1)
循环(for
,while
或until
)就像其他任何命令一样。您可以使用命令替换来捕获其输出。
$ 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)
然后事情变得有点棘手。您不能直接写入变量,但可以说最简单的解决方法是上面的,它首先将输出写入文件,然后将文件读回变量。