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:
- entra e acessa o data.txt;
- ele lê cada coluna no array correspondente
arr1
,arr2
,arr3
(estes são esvaziados/redefinidos ao entrar no próximo subdiretório); - ele lê
arr2[0]
emearr1
,arr2[1]
emearr2
, ...,arr2[j-1]
emearr$j
. Uma estrutura semelhante é seguida para os dados emarr3
. Elesearr$j
mantê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.