Primeiro, isso está errado:
awk -F" " '{ array3[p]="123" };1' ${array1[$i]}
${array1[$i]} não é um arquivo, então você não pode simplesmente lançá-lo como primeiro argumento de linha de comando para awk . Com as variáveis, você teria que usar echo $VARIABLE ou aqui string <<< , assim como
awk -F" " '{ array3[p]="123" };1' <<< ${array1[$i]}
Em segundo lugar, há uma questão de escopo. O array3[p]="123" existe somente no código awk , portanto você não pode atribuir nada a um fora dele. O que você poderia fazer, no entanto, simplesmente fazer
array3[$p]="123"
Também não está claro de onde exatamente $i vem do seu script. No geral, sua pergunta nos fornece um pouco de código, mas não fornece pistas para responder totalmente à sua pergunta