linux - 使用变量问题在声明期间增加数组元素

标签 linux bash

所以,是的,通常您会使用 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/

相关文章:

linux - Nginx + Nodejs + WordPress 路由

linux - 在当前目录运行 expect 脚本

bash - 在数组中使用 grep

bash - 将从批处理文件调用的 bash 输出重定向到控制台

bash - 如何获取通过管道传输到 Bash 中另一个进程的进程的 PID?

linux - 使用 bash 在文件中的模式后面插入一行

c - 线程中的信号处理程序

linux - 如何根据文本文件将文件移动到子目录

python - apache2 和 mod wsgi : Target WSGI script cannot be loaded as Python module

linux - 如何检查 RPM .spec 文件中是否存在文件?