私はBashスクリプトの初心者で、現在forループ、配列、変数の割り当て/置換を扱う際に、解決方法が分からない小さな問題を抱えています。私は文字通り新しい、私はこれを調べる方法さえ知りません。誰でもそう言うかもしれませんが、これは宿題などではないことを強調しておきます。後で処理するために膨大な量のデータを再編成する必要があり、それをやや簡単にやろうと思ったのです。頭いいBash を学びながら、その方法を学びます。
背景: ディレクトリには3つのサブディレクトリ(Folder1、Folder2、Folder3)が含まれています。各サブディレクトリには1つdata.txt ファイル。各 data.txt ファイルには、固定数の行を持つ 3 つの列があります。
ゴールメイン ディレクトリから 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]})
(および試したすべてのバリエーション)、さまざまなエラーが発生します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]}')
。
ご提案がありましたら、よろしくお願いいたします。