Bash – Possible to use brace (permutation) and array expansion simultaneously

bashbrace-expansionshell-builtinshell-script

Bash's {} brace expansion syntax allows for creating easy permutations

# echo {b,c,d}{a,e,i,o,u}
ba be bi bo bu ca ce ci co cu da de di do du

However it's not clear to me if/how it's possible to use this along with arrays except in very awkward use of $() echo and eval

Is there a simple way to use arrays with curly brace (permutation) expansion?

For example sake, imagine something like (which does not work of course):

CONS=( b c d )
VOWEL=( a e i o u )

echo {${CONS[@]}}{${VOWEL[@]}}

Best Answer

You might use eval with IFS=,; "${array[*]}" (which joins the values with commas) or just two for loops:

$ CONS=(b c d);VOWEL=(a e i o u)
$ IFS=,;eval echo "{${CONS[*]}}{${VOWEL[*]}}"
ba be bi bo bu ca ce ci co cu da de di do du
$ for c in "${CONS[@]}";do for v in "${VOWEL[@]}";do echo "$c$v";done;done|paste -sd' ' -
ba be bi bo bu ca ce ci co cu da de di do du
Related Question