Wenn ich arithmetische Erweiterung in einem Array-Index in bash, wie folgt aus:Bash: arithmetische Expansion in Array-Indizes - wird das Dollarzeichen benötigt?
declare -a FILES
declare -i INDEX=0
for FILE in ./*
do
FILES[((INDEX++))]="$FILE"
done
Benötige ich ein Dollarzeichen vor ((...))?
So muss es sein:
FILES[((INDEX++))]="$FILE"
oder besser gesagt:
FILES[$((INDEX++))]="$FILE"
?
In meiner lokalen Kopie von bash scheinen beide Varianten zu funktionieren - es ist Version 4.3.30.
Ich würde erwarten, dass nur letzteres funktioniert, weil ich denke, dass nur das Ergebnis des arithmetischen Ausdrucks zurückgibt. Aber da: Bash - arithmetic in array index Ich habe gelesen, dass nur der erste mit älteren Versionen von bash (?) Funktionieren könnte. Also welches ist eigentlich richtig? Und warum funktioniert der erste? Ich habe darauf noch keine spezifische Antwort gefunden.
In der Frage, die Sie verbunden sind, wurde das Problem nicht auf die Version von 'bash' bezogen. Der Benutzer hatte einen Fehler in seinem Skript ('über das Versions-Problem, vergiss es ... Ich fand heraus, dass x leer ist, wenn der Fehler erreicht ist'). – Aserre
@Aserre: Natürlich hast du recht, ich dachte, der Benutzer würde einen Syntaxfehler bekommen, wie in seinem Kommentar zu der akzeptierten Antwort erwähnt, aber ich habe nicht bemerkt, dass er das Schlüsselwort "let" in seinem Kommentar verwendet. – erbth