{}
Sintaksis ekspansi brace Bash memungkinkan untuk membuat permutasi yang mudah
# echo {b,c,d}{a,e,i,o,u}
ba be bi bo bu ca ce ci co cu da de di do du
Namun tidak jelas bagi saya jika / bagaimana mungkin untuk menggunakan ini bersama dengan array kecuali dalam penggunaan $()
echo
daneval
Apakah ada cara sederhana untuk menggunakan array dengan curly brace (permutasi) ekspansi?
Misalnya sake, bayangkan sesuatu seperti (yang tidak berfungsi tentu saja):
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}.
jika Anda ingin yang berbeda maka beri tahu kami .. `ba be bi bo bu ca ce ci co cu da de di do du
.Jawaban:
Anda dapat menggunakan eval with
IFS=,; "${array[*]}"
(yang menggabungkan nilai dengan koma) atau hanya dua untuk loop:sumber
Itu mungkin dengan
zsh
:Atau
es
:Dengan
bash
atauksh93
, Anda harus melakukan sesuatu yang berbelit-belit seperti:sumber
eval
atau.
) sekalipun.eval "echo {$(printf ',%s' "${CONS[@]}" "${VOWEL[@]}" | tail -c+2)}"
(Namun tidak bekerja untuk elemen tunggal.)Menyenangkan, tapi mungkin bukan yang terbaik.
sumber