我是 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]}')
。
預先感謝您的任何建議。