Ich habe ein Problem mit for loop in bash. Zum Beispiel: Ich habe ein Array ("etc" "bin" "var")
. Und ich iteriere auf diesem Array. Aber in der Schleife möchte ich einen Wert an das Array anhängen. Z.B
array=("etc" "bin" "var")
for i in "${array[@]}"
do
echo $i
done
Dies wird angezeigt etc
bin
var
(natürlich in separaten Zeilen). Und wenn ich danach so anhänge do
:
array=("etc" "bin" "var")
for i in "${array[@]}"
do
array+=("sbin")
echo $i
done
Ich möchte: etc
bin
var
sbin
(natürlich in getrennten Zeilen).
Das funktioniert nicht. Wie kann ich es tun?
Antworten:
Es wird "sbin" dreimal angehängt, wie es sollte, aber es wird nicht über die neu hinzugefügten "sbin" in derselben Schleife iterieren.
Nach dem 2. Beispiel:
quelle
for
Schleifen. Führen Sie zuerst Ihre Ergänzungen durch und durchlaufen Sie dann das Ergebnis.array+=(sbin); for i in ...
Dadurch wird Ihre Liste durchlaufen
sbin
, das Ende dieser Liste bedingtsbin
angeheftet und in den iterierbaren Inhalt aufgenommen.quelle