{}
Składnia rozwinięcia nawiasu klamrowego Bash pozwala na tworzenie łatwych permutacji
# echo {b,c,d}{a,e,i,o,u}
ba be bi bo bu ca ce ci co cu da de di do du
Jednak nie jest dla mnie jasne, czy / jak można tego używać wraz z tablicami, z wyjątkiem bardzo niewygodnego użycia $()
echo
ieval
Czy istnieje prosty sposób korzystania z tablic z rozszerzaniem nawiasów klamrowych (permutacji)?
Na przykład, wyobraź sobie coś takiego (co oczywiście nie działa):
CONS=( b c d )
VOWEL=( a e i o u )
echo {${CONS[@]}}{${VOWEL[@]}}
GNU bash, version 4.2.24
Output,root@router:~# echo {${CONS[@]}}{${VOWEL[@]}} {b c d}{a e i o u}.
jeśli chcesz inaczej, daj nam znać ...ba be bi bo bu ca ce ci co cu da de di do du
.Odpowiedzi:
Możesz użyć eval z
IFS=,; "${array[*]}"
(który łączy wartości przecinkami) lub tylko dwóch dla pętli:źródło
Jest to możliwe dzięki
zsh
:Lub
es
:Za pomocą
bash
lubksh93
musisz zrobić coś skomplikowanego, na przykład:źródło
eval
lub.
).eval "echo {$(printf ',%s' "${CONS[@]}" "${VOWEL[@]}" | tail -c+2)}"
(Nie działa jednak na pojedynczy element.)Zabawne, ale prawdopodobnie nie najlepsze.
źródło