read -r "job$i" < ...
Isso deve funcionar se i=3
e read
definir job3
.
No entanto, seus loops parecem um pouco:
for((i=0; i < Counter; i++)); do
while read -r Parmfilesjobid; do
IFS=$'\n' read -d '' -r -a "job$i" < ${Parmfilesjobid[$i]}
O while read
colocará apenas um valor em Parmfilesjobid
, por exemplo, ${Parmfilesjobid[1]}
será desfeito. (É claro que um acesso escalar como $var
é o mesmo que ${var[0]}
, então se você tivesse Parmfilesjobid
definido como uma matriz antes, você pode ter valores com outros índices também, mas não está usando o valor de read
exceto quando i=0
.
Você também está usando Parmfilesjobid
como entrada para o loop while read...
e como a variável usada por read
, o que é um pouco confuso e significa que as últimas iterações do for
daria while
o último Parmfilesjobid
lido na iteração anterior como entrada. Isso parece um pouco estranho.
Como não vejo sua opinião, não sei exatamente o que você quer fazer aqui. Mas suspeito que algo como isto pode estar mais perto:
i=0
while read -r filename ; do
IFS=$'\n' read -d '' -r -a "job$i" < "$filename"
let i++
done <<< "${var_with_filenames}"