我是 Bash 脚本新手,目前发现自己在处理 for 循环、数组和变量赋值/替换时遇到一个小问题,我不知道如何解决。因为我确实是新的,我什至不知道如何查找。尽管任何人都可以这么说,但我强调这不是家庭作业或任何类似的东西 - 我只需要重新组织大量数据以供以后处理,并且我认为我会以某种方式完成它聪明的学习一些 Bash 的同时。
背景:我有一个目录,它本身包含三个子目录 -Folder1、Folder2、Folder3。每个子目录都有一数据.txt 文件。每个 data.txt 文件都具有三列和固定行数。
目标:我想从主目录启动一个 Bash 脚本,该脚本迭代子目录并执行以下操作:
- 它进入并访问data.txt;
- 它将每一列读入相应的数组
arr1
,arr2
(arr3
这些在进入下一个子目录时被清空/重置); - 它读
arr2[0]
入earr1
、arr2[1]
进入earr2
、...、arr2[j-1]
进入earr$j
。中的数据遵循类似的结构arr3
。保留earr$j
过去迭代的数据并构成我想要的输出数组。每次扫描新目录时,数据都会附加到这些目录中。
这听起来过于复杂 - 但这就是我必须处理的数据结构。在大多数情况下,我已经找到了一个可行的解决方案(当然,可能不是最好的解决方案)。
问题:由于某种原因,我无法识别,每次尝试earr$j+=(${arr2[j-1]})
在循环中附加 as (以及我尝试过的各种变体)时,我都会遇到各种错误j
。下面是给我带来麻烦的片段。如果有人能指出问题所在,并且如果可能的话,提供解决方案的工作示例,我将不胜感激。
有问题的 for 循环:
for j in $(seq 1 $number_of_lists); do echo "(${arr2[j-1]})"; earr$j+=(${arr2[j-1]}); echo "(${arr3[j-1]})"; done
特别是,我在这earr$j+=(${arr2[j-1]})
部分遇到了麻烦。这是我的错误输出:
./next.sh: line 33: syntax error near unexpected token "${arr2[j-1]}''
和./next.sh: line 33: earr$j+=('${arr2[j-1]}')
。
预先感谢您的任何建议。