Die {}
Klammererweiterungssyntax von Bash ermöglicht das Erstellen einfacher Permutationen
# echo {b,c,d}{a,e,i,o,u}
ba be bi bo bu ca ce ci co cu da de di do du
Es ist mir jedoch nicht klar, ob / wie es möglich ist, dies zusammen mit Arrays zu verwenden, außer bei sehr umständlicher Verwendung von $()
echo
undeval
Gibt es eine einfache Möglichkeit, Arrays mit geschweifter Klammer (Permutation) zu verwenden?
Stellen Sie sich zum Beispiel so etwas vor (was natürlich nicht funktioniert):
CONS=( b c d )
VOWEL=( a e i o u )
echo {${CONS[@]}}{${VOWEL[@]}}
GNU bash, version 4.2.24
Ausgabe,root@router:~# echo {${CONS[@]}}{${VOWEL[@]}} {b c d}{a e i o u}.
wenn Sie etwas anderes wollen, dann lassen Sie es uns wissen. `ba be bi bo bu ca ce ci co cu da de di do du
.Antworten:
Sie können eval with
IFS=,; "${array[*]}"
(das die Werte mit Kommas verbindet) oder nur zwei for-Schleifen verwenden:quelle
Es ist möglich mit
zsh
:Oder
es
:Mit
bash
oderksh93
müssten Sie etwas tun, das wie folgt verwickelt ist:quelle
eval
oder.
) tun können .eval "echo {$(printf ',%s' "${CONS[@]}" "${VOWEL[@]}" | tail -c+2)}"
(Funktioniert jedoch nicht für einzelne Elemente.)Spaß, aber wahrscheinlich nicht der beste.
quelle