将循环结果存储在 sh 的 shell 变量中
store results of a loop in a shell variable in sh
我有几个嵌套循环在多次迭代中生成相同的数据。
我想将来自内部循环之一的数据保存在 shell 变量中。
有没有一种简单的方法可以将循环的输出重定向到变量,而不修改循环本身?
循环(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)
然后事情变得有点棘手。您不能直接写入变量,但可以说最简单的解决方法是上面的方法,它首先将输出写入文件,然后将文件读回变量。
我有几个嵌套循环在多次迭代中生成相同的数据。
我想将来自内部循环之一的数据保存在 shell 变量中。
有没有一种简单的方法可以将循环的输出重定向到变量,而不修改循环本身?
循环(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)
然后事情变得有点棘手。您不能直接写入变量,但可以说最简单的解决方法是上面的方法,它首先将输出写入文件,然后将文件读回变量。