所以,是的,通常您会使用 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 # |读取 LINE 时;做
VAR="echo $LINE | cut -d"|"-f1
";
端点[$n]="$VAR"
echo "这是数组变量:${ENDPOINT[$n]}"
完成
问题仍然是它似乎没有真正存储到数组中。它只是覆盖数组中的第一个元素。如果我尝试在脚本中的某处回显任何较低的数组值,则唯一出现的就是数组元素 0 中的值及其设置为数据库中的最后一个条目。
最佳答案
我似乎正在执行一个命令,可能这是一个单独的进程,并且在完成时数组会丢失
这样做:
n=1
endpoints=`grep -v \# databases/$IPS | cut -d":" -f1`
for i in $endpoints; do
ENDPOINT[$n]=$i;
echo "TESTING: ${ENDPOINT[$n]}"
let n++
done
关于linux - 使用变量问题在声明期间增加数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15985667/