【发布时间】:2017-06-11 03:21:20
【问题描述】:
我有一个如下所示的 for 循环。我需要将循环的整个输出添加到数组或变量中。
for i in $ip
do
curl -s $i:9200
done
知道如何实现吗?
【问题讨论】:
标签: arrays bash variables for-loop
我有一个如下所示的 for 循环。我需要将循环的整个输出添加到数组或变量中。
for i in $ip
do
curl -s $i:9200
done
知道如何实现吗?
【问题讨论】:
标签: arrays bash variables for-loop
你可以这样使用它:
# 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 输出将成为数组中的单个条目。
【讨论】:
$(...) 即命令替换,我们添加curl 命令的输出而不是命令本身。
您可以捕获任何命令的输出,包括复合命令,方法是将其括在$() 中。使用该技术,您可以在变量中捕获 for 循环的输出,如下所示:
results=$(
for i in $ip
do
curl -s $i:9200
done
)
原则上,可以以类似的方式捕获到数组中,但适当地处理元素分隔符可能会很困难。
【讨论】:
您可以使用+=
declare -a output
for i in $ip
do
output+=("$(curl -s $i:9200)")
done
【讨论】:
-bash: syntax error near unexpected token ('`
+=之前不能有空格。嗯,你每天都会学到新东西