Ich möchte ein assoziatives Array in Bash mit Dateinamen erstellen, die von einem Glob als Schlüssel abgeleitet sind. Hier ist, was ich tue:Erstellen eines assoziativen Bash-Arrays mit glob-Ausgabe
declare -A file_hash
for file in *; do
file_hash+=([$file]=1)
done
Ich bin gespannt zu sehen, ob es ein einfacher Weg, um die gleiche Sache zu tun, ein wenig wie, wie wir initialisieren ein normales Array auf diese Weise:
file_array=(*)
Eine der Ideen, die ich aus another Beitrag auf SO bekam ist:
file_array=(*)
declare -A file_hash=($(echo ${file_array[@]} | sed 's/[^ ]*/[&]=&/g'))
ist das der beste Weg?
Inspiriert von der Echo-Methode funktioniert dies in einigen Tests OK, erfordert aber eval: 'declare -A filehash; eval $ (printf 'filehash + = (["% s"] = 1);' * .txt) ' –