ich meinen Anwendungsfall für diese 3 Zeilen gestrippt (plus dem Ausgang):Warum überschreibt Bash mein Array nicht mit einem neuen?
A=(foo bar)
A=$(echo "spam egg")
echo ${A[@]}
spam egg bar
es ein Array mit zwei Elementen von Hand geschrieben schafft. Einige Zeit später möchte ich mein Array durch die Ausgabe eines Befehlszeilentools ersetzen (z. B. ls *.vhd
). Anstatt das Array zu ersetzen, ersetzt Bash nur das erste Element, sodass der Balken am Ende "angehängt" wird.
Wenn ich ein anderes handgeschriebenes Array verwende, kann ich dieses Verhalten nicht reproduzieren.
A=(foo bar)
A=(spam egg)
echo ${A[@]}
spam egg
So vermute ich es mit $()
in engem Zusammenhang steht. Wie kann ich mein Problem lösen?
'A = $ (echo" Spam-Ei ")' ist äquivalent zu 'A [0] = $ (echo" Spam-Ei ")'. – chepner