Ich schreibe ein Bash-Skript, um einige Dateien zu analysieren. In einer ersten Iteration erstelle ich assoziative Arrays mit Wortzählungen für jede Kategorie, die analysiert wird. Diese Kategorien sind nicht im Voraus bekannt, daher sind die Namen dieser assoziativen Arrays variabel, aber alle mit demselben Präfix count_$category
. Die assoziativen Arrays haben ein Wort als Schlüssel und ihr Vorkommen zählt in dieser Kategorie als Wert.Bash: Iterate über Variablennamen
Nachdem alle Dateien analysiert wurden, muss ich die Ergebnisse für jede Kategorie zusammenfassen. Ich kann mit ${count_*}
über die Variablennamen iterieren, aber wie kann ich auf die assoziativen Arrays hinter diesen Variablennamen zugreifen? Für jedes assoziative Array (jede count_*
Variable) sollte ich über die Wörter und ihre Zählungen iterieren.
Ich habe bereits mit indirekten Zugang wie dies versucht, aber es funktioniert nicht:
for categorycount in ${count_*} # categorycount now holds the name of the associative array variable for each category
do
array=${!categorycount}
for word in ${!array[@]}
do
echo "$word occurred ${array[$word]} times"
done
done
Können Sie ein [mcve] posten? Zum Beispiel: Bearbeiten Sie Ihren Code, um 2 assoziative Arrays zu füllen, und zeigen Sie uns, was Sie erwarten. –
Gelöst: Ich habe endlich eine SO Frage gefunden, die dieses Problem beantwortet http://Stackoverflow.com/a/13306800/5324593 – OKamers
Welche Version von bash? 4.3 hat eine neue Einrichtung direkt vor Ort. –