私はBashスクリプトに初めてアクセスし、現在の解決策を知らないforループ、配列、および変数の割り当て/置換に関する小さな問題に直面しています。なぜなら新しい、私はそれを見つける方法がわからない。誰でもできることですが、これは宿題やそうではないことを強調します。ちょうど後で処理するために多くのデータを再構成すると、何とかなりそうです。賢い同時にBashを学びなさい。
背景:フォルダ1、フォルダ2、フォルダ3という3つのサブディレクトリを含むディレクトリがあります。各サブディレクトリに一つ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]}')
。
どんなアドバイスもよろしくお願いします。