La {}
sintaxis de expansión de llaves de Bash permite crear permutaciones fáciles
# echo {b,c,d}{a,e,i,o,u}
ba be bi bo bu ca ce ci co cu da de di do du
Sin embargo, no está claro para mí si / cómo es posible usar esto junto con las matrices, excepto en el uso incómodo de $()
echo
yeval
¿Hay una manera simple de usar matrices con expansión de llaves (permutación)?
Por ejemplo, imagina algo como (que, por supuesto, no funciona):
CONS=( b c d )
VOWEL=( a e i o u )
echo {${CONS[@]}}{${VOWEL[@]}}
GNU bash, version 4.2.24
Outputroot@router:~# echo {${CONS[@]}}{${VOWEL[@]}} {b c d}{a e i o u}.
si quieres algo diferente, háznoslo saber ... 'ba be bi bo bu ca ce ci co cu da de di do du
.Respuestas:
Puede usar eval with
IFS=,; "${array[*]}"
(que une los valores con comas) o solo dos para bucles:fuente
Es posible con
zsh
:O
es
:Con
bash
oksh93
, tendrías que hacer algo complicado como:fuente
eval
o.
).eval "echo {$(printf ',%s' "${CONS[@]}" "${VOWEL[@]}" | tail -c+2)}"
(Sin embargo, no funciona para un solo elemento).Divertido, pero probablemente no el mejor.
fuente