Você pode usar a expansão de contraventamento. Mas é feio. Você precisa usar eval
, já que a expansão de contraventamento acontece antes da expansão da variável (matriz). E "${var[*]}"
com IFS=,
para criar as vírgulas.
Considere um comando para gerar a string
echo {a,b,c}+{1,2,3}
Supondo que as matrizes são chamadas letters
e numbers
, você poderia fazer isso usando a notação "${var[*]}"
, com IFS=,
para inserir vírgulas entre os elementos em vez de espaços.
letters=(a b c)
numbers=(1 2 3)
IFS=,
echo {"${letters[*]}"}+{"${numbers[*]}"}
Que imprime
{a,b,c}+{1,2,3}
Agora adicione eval
, então ele executa essa string como um comando
eval echo {"${letters[*]}"}+{"${numbers[*]}"}
E você começa
a+1 a+2 a+3 b+1 b+2 b+3 c+1 c+2 c+3