我得到了以下脚本,其中我从网络中的主机接收传感器数据。我收到的数据应存储在一个名为output
的单独数组中,这样我就可以在循环结束后继续处理数组输出。每当接收到新的传感器数据时,当前循环如果覆盖存储在输出中的数据。
declare -a sensorData=(
"1.3.6" #Data1
"1.3.6" #Data2
)
declare -a output=()
for i in "${sensor[@]}"
do
output=$(snmpget -v "snmpversion" -c "ipaddress" "$i")
echo $output
done
因此,我从snmpget
命令获得的值应存储在数组output
中。
答案 0 :(得分:0)
这个想法是正确的,但您只需要将命令替换$(..)
输出包含在您定义的数组中。 +=
运算符允许您在每次迭代中将snmpget
输出附加到数组。
output+=( $(snmpget -v "snmpversion" -c "ipaddress" "$i") )
然后,您可以遍历数组以获取存储的值。
for val in "${output[@]}"; do
printf "%s\n" "$val"
done
如果您担心IFS
以及shell如何将每个命令输出行拆分到数组中,您可以将其保留为mapfile
命令,可在最新版本的{{1}中使用(我猜是v4.0或更多)
bash
然后像以前一样在输出数组上运行循环。但是,当您想追加到数组时,这不适用,只需运行一次命令即可。