所以是的,通常你会使用 for 循环或类似的方法来增加一个数组,但在这种情况下,这是不可能的,因为我已经在一个循环中并且只需要在数组中设置一个值并继续前进。这是代码:
n=1
cat databases/$IPS | grep -v \# | while read LINE; do
ENDPOINT[$n]="`echo $LINE | cut -d":" -f1`";
echo "TESTING: ${ENDPOINT[$n]}"
let n++
done
因此,while 循环将从平面文件数据库中读取几行,并将第一个冒号分隔值拉出,该值需要存储在数组中。由于在这个项目上工作太久,事情变得越来越混乱。我可能不得不重新考虑这部分。
所以官方的问题是,在不使用另一个循环的情况下,如何使用变量增加元素,以便我可以在当前的 while 循环中设置数组。
- - - 更新 - - -
我知道我试图做的事情似乎有点奇怪和不正统。因此,while 循环逐行读取数据库。在 while 循环的第一次迭代期间,数据库被读取,并且数据库第一行上的第一个“单元”作为数组元素 1 存储到数组中(或者可能是 0,没关系)。然后while循环返回第二遍,并拉取数据库中第二行的第一个单元格,它需要将其存储到元素2下的数组中。循环继续执行此操作直到数据库结束。
所以我知道如何使用循环读取数组的内容,但我从未使用循环设置数组。我无法让数组中的元素编号递增,因此当 while 循环进行下一次传递时,它不仅会继续覆盖 array[1]
这有帮助吗?
- - - 更新 - - -
所以看起来这有点工作。将这个数据库值存储在这个数组中的全部意义在于,它不仅在这个 while 循环中使用(省略了不相关的代码)。但我需要在脚本的其他地方使用这些值。
cat 数据库/$IPS | grep -v # | 一边读线;做 VAR=" echo $LINE | cut -d"|" -f1
"; ENDPOINT[$n]="$VAR" echo "这里是数组变量:${ENDPOINT[$n]}" 完成
问题仍然是它似乎并没有真正存储到数组中。它只是覆盖数组中的第一个元素。如果我尝试在脚本中的某处回显任何较低的数组值,那么唯一出现的是数组元素 0 中的值并将其设置为数据库中的最后一个条目。