A {}
sintaxe de expansão de chaves do Bash permite criar permutações fáceis
# echo {b,c,d}{a,e,i,o,u}
ba be bi bo bu ca ce ci co cu da de di do du
No entanto, não está claro para mim se / como é possível usar isso junto com matrizes, exceto no uso muito estranho de $()
echo
eeval
Existe uma maneira simples de usar matrizes com expansão de chave (permutação)?
Por exemplo, imagine algo como (o que não funciona, é claro):
CONS=( b c d )
VOWEL=( a e i o u )
echo {${CONS[@]}}{${VOWEL[@]}}
GNU bash, version 4.2.24
saídaroot@router:~# echo {${CONS[@]}}{${VOWEL[@]}} {b c d}{a e i o u}.
, se quiser diferente, então deixe-nos saber .. `ba be bi bo bu ca ce ci co cu da de di do du
.Respostas:
Você pode usar eval with
IFS=,; "${array[*]}"
(que une os valores com vírgulas) ou apenas dois para loops:fonte
É possível com
zsh
:Ou
es
:Com
bash
ouksh93
, você teria que fazer algo complicado como:fonte
eval
ou.
).eval "echo {$(printf ',%s' "${CONS[@]}" "${VOWEL[@]}" | tail -c+2)}"
(Não funciona para um único elemento embora.)Divertido, mas provavelmente não o melhor.
fonte