for loop e anexando uma lista de arrays

for loop e anexando uma lista de arrays

Sou novo em scripts Bash e atualmente estou lidando com um pequeno problema ao trabalhar com loops for, matrizes e atribuição/substituição de variáveis ​​que não sei como resolver. Já que estou literalmentenovo, eu nem sei como pesquisar isso. Embora qualquer um possa dizer isso, enfatizo que isso não é lição de casa ou algo do tipo - eu só preciso reorganizar uma enorme quantidade de dados para processamento posterior e pensei em fazer isso de uma forma um tantointeligentemaneira enquanto aprende um pouco de Bash.

Fundo: Eu tenho um diretório que contém três subdiretórios - Pasta1, Pasta2, Pasta3. Cada subdiretório temumarquivo dados.txt. Cada arquivo data.txt apresenta três colunas com um número fixo de linhas.

Meta: desejo iniciar um script Bash do diretório principal que itera nos subdiretórios e executa o seguinte:

  1. entra e acessa o data.txt;
  2. ele lê cada coluna no array correspondente arr1, arr2, arr3(estes são esvaziados/redefinidos ao entrar no próximo subdiretório);
  3. ele lê arr2[0]em earr1, arr2[1]em earr2, ..., arr2[j-1]em earr$j. Uma estrutura semelhante é seguida para os dados em arr3. Eles earr$jmantêm os dados de iterações anteriores e constituem minhas matrizes de saída desejadas. A cada varredura de um novo diretório, os dados são anexados a ele.

Parece muito complicado - mas essa é a estrutura dos dados com a qual tenho que trabalhar. Na maior parte, descobri uma solução funcional (é verdade, provavelmente não a melhor).

Problema: Por algum motivo que não consigo identificar, estou recebendo todos os tipos de erros a cada tentativa de anexar as earr$j+=(${arr2[j-1]})(e todos os tipos de variações que experimentei) em um loop j. Abaixo está o trecho que está me causando problemas. Eu apreciaria se alguém pudesse apontar qual é o problema e, se possível, fornecer um exemplo prático de solução.

O loop for em questão:

for j in $(seq 1 $number_of_lists); do echo "(${arr2[j-1]})"; earr$j+=(${arr2[j-1]}); echo "(${arr3[j-1]})"; done

Em particular, tenho problemas com a earr$j+=(${arr2[j-1]})peça. Esta é a minha saída de erro:

./next.sh: line 33: syntax error near unexpected token "${arr2[j-1]}'' e ./next.sh: line 33: earr$j+=('${arr2[j-1]}').

Agradecemos antecipadamente por quaisquer sugestões.

informação relacionada