Ich möchte auf die Array-Indexvariable zugreifen, während ich ein Array in meinem Bash-Shell-Skript durchschleife.
myscript.sh#!/bin/bash
AR=('foo' 'bar' 'baz' 'bat')
for i in ${AR[*]}; do
echo $i
done
Das Ergebnis des obigen Skripts ist:
foo
bar
baz
bat
Das Ergebnis, das ich suche, ist:
0
1
2
3
Wie ändere ich mein Skript, um dies zu erreichen?
bash
shell
shell-script
Mäher
quelle
quelle
"${array[*]}"
statt"${array[@]}"
. Wenn Sie*
anstelle von "@
more" oder "less" verwenden, wird dies als Zeichenfolge anstelle eines Arrays behandelt.Antworten:
Sie können dies mithilfe der Liste der Array-Schlüssel tun . Von der
bash
Manpage:Für Ihr Beispiel:
Das führt zu:
Beachten Sie, dass dies auch für nicht aufeinanderfolgende Indizes funktioniert:
Das führt zu:
quelle
printf "$i=(${AR[i]})\n"
oderecho "$i=(${ARi]})"
beide geben ein kleines Extra, indem sie zeigen, wie man key & var bekommt, aber genau genommenecho "$i"
hätte das OP beantwortet. Der Rest ist "bash fu" :)Zusätzlich zu jordanms Antwort können Sie auch eine
C
ähnliche Schleife inbash
:quelle
Sie können so etwas tun:
Ausgabe:
quelle