Ich bin neu im Bashing und kann kein gutes Tutorial finden, um meine Frage zu beantworten.
array=( item1 item2 item3)
for name in ${array[@]}; do
echo current/total
... some other codes
done
Ich möchte den "aktuellen" und "Gesamt" -Wert berechnen, da die erwartete Ausgabe davon ist:
1/3
2/3
3/3
Danke für jegliche Art von Tipps
${array[@]}
doppelte Anführungszeichen setzen sollten . Andernfalls wird die Wortteilung ausgeführt und Sie erhalten unerwünschte Ergebnisse bei Eingaben wiearray=("item 1" "item 2" "item 3")
.Antworten:
Sie können auf die Array-Indizes mit
${!array[@]}
und auf die Länge des Arrays mit zugreifen${#array[@]}
, z. B .:Beachten Sie, dass Sie, da Bash-Arrays mit Nullen indiziert sind , tatsächlich Folgendes erhalten:
Wenn Sie die Zählung laufen von 1 wollen , können Sie ersetzen
$index
durch$((index+1))
. Wenn Sie die wollen Werte sowie die Indizes können Sie verwenden ,"${array[index]}"
dhgeben
quelle
echo ($index+1)/${#array[@]}
:?Ein Nullindex ist vollkommen gültig, wenn Sie sich den Index tatsächlich als einen Versatz von der Basisadresse eines Arrays vorstellen. Das ist in der Tat die Norm, obwohl sie von Dialekt zu Dialekt unterschiedlich ist. Mit der alten Jovial-Sprache
[0]
enthielt tatsächlich die maximale Größe des Arrays. so fing es an mit[1]
.Bei einigen Basisimplementierungen können Sie wahlweise einen
0
oder1
den ersten Index festlegen. Mit mindestens einem Basic können Sie Arrays festlegen[n]
, auf die der Index angewendet werden soll[m]
. Dabei kannn
undm
einen beliebigen ganzzahligen Wert haben, auch einen negativen, solange diesern
kleiner oder gleich istm
. Der Wert, denn
sie haben, wird von dem[index]
eingegebenen Wert abgezogen , alsindex-n = 0
ob der Index dem entsprichtn
.Aber Sie können das Gleiche und mehr in Ihrem eigenen Code tun. Sie können die Reihenfolge eines Arrays sogar folgendermaßen umkehren:
Dieses Codebeispiel besteht eigentlich nur teilweise aus einer Sprache. Ich wollte nur, dass es besser lesbar ist. Die Schrittvariable wird verwendet, um die scheinbare Richtung zu steuern, in die Sie sich bewegen, egal ob positiv oder negativ. Sie wird verwendet, um den effektiven Index beim Betreten oder Verlassen des Arrays zu berechnen, der eigentlich immer positiv ist
[0]
.quelle