forループと配列リストへの追加

forループと配列リストへの追加

私はBashスクリプトの初心者で、現在forループ、配列、変数の割り当て/置換を扱う際に、解決方法が分からない小さな問題を抱えています。私は文字通り新しい、私はこれを調べる方法さえ知りません。誰でもそう言うかもしれませんが、これは宿題などではないことを強調しておきます。後で処理するために膨大な量のデータを再編成する必要があり、それをやや簡単にやろうと思ったのです。頭いいBash を学びながら、その方法を学びます。

背景: ディレクトリには3つのサブディレクトリ(Folder1、Folder2、Folder3)が含まれています。各サブディレクトリには1つdata.txt ファイル。各 data.txt ファイルには、固定数の行を持つ 3 つの列があります。

ゴールメイン ディレクトリから Bash スクリプトを起動し、サブディレクトリを反復処理して次の操作を実行します。

  1. data.txt に入り、アクセスします。
  2. 各列を対応する配列arr1、に読み込みます(次のサブディレクトリに入ると、これらは空/リセットされます)。arr2arr3
  3. 、、...、arr2[0]に読み込みます。 のデータにも同様の構造が適用されます。 は過去の反復からのデータを保持し、必要な出力配列を構成します。新しいディレクトリをスキャンするたびに、これらの配列にデータが追加されます。earr1arr2[1]earr2arr2[j-1]earr$jarr3earr$j

非常に複雑に聞こえますが、これが私が扱わなければならないデータの構造です。大部分については、実用的な解決策を見つけました (もちろん、おそらく最善の解決策ではありません)。

問題: 何らかの理由で、ループ内で を追加しようとするたびにearr$j+=(${arr2[j-1]})(および試したすべてのバリエーション)、さまざまなエラーが発生します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]}')

ご提案がありましたら、よろしくお願いいたします。

関連情報