将for循环的输出存储到数组或变量中

时间:2017-01-25 19:36:54

标签: arrays bash variables for-loop

我有一个for循环,如下所示。我需要将循环的整个输出添加到数组或变量中。

for i in $ip
do
  curl -s $i:9200
done

知道如何实现这一目标吗?

3 个答案:

答案 0 :(得分:5)

你可以像这样使用它:

# declare an array
declare -a arr=()

for i in $ip
do
  # append each curl output into our array
  arr+=( "$(curl -s $i:9200)" )
done

# check array content
declare -p arr

在curl注释周围使用引号非常重要,以避免将curl命令输出的单词拆分为多个数组条目。使用引号,所有curl输出将成为数组中的单个条目。

答案 1 :(得分:0)

您可以使用+=

declare -a output
for i in $ip
do
  output+=("$(curl -s $i:9200)")
done

答案 2 :(得分:0)

您可以通过将其包含在$()中来捕获任何命令的输出,包括复合命令。使用该技术,您可以在变量中捕获for循环的输出,如下所示:

results=$(
  for i in $ip
  do
    curl -s $i:9200
  done
)

原则上,捕获到数组可以以类似的方式完成,但适当地处理元素分隔符可能会很困难。