Chcę zrobić coś takiego:zapętlenie nad tablicami, drukowanie zarówno indeks i wartość
foo=()
foo[0]="bar"
foo[35]="baz"
for((i=0;i<${#foo[@]};i++))
do
echo "$i: ${foo[$i]}"
done
# Output:
# 0: bar
# 1:
Potem próbowałem pętli nim używając w:
foo=()
foo[0]="bar"
foo[35]="baz"
for i in ${foo[@]}
do
echo "?: $i"
done
# Output:
# ?: bar
# ?: naz
ale tutaj I don” t znać wartość indeksu.
wiem, że mogłem coś
foo=()
foo[0]="bar"
foo[35]="baz"
declare -p foo
# Output:
# declare -a foo='([0]="bar" [35]="baz")'
ale nie można to zrobić w inny sposób?
Ważna uwaga, podczas iterable, przestrzeń oddzielona lista słów to _nie_ tablica. Owiń to tak, aby '(a b c)' przekształcić go w tablicę. – Breedly
Użycie "[@]" i podwójnych cudzysłowów oznacza, że nie jest to "rozdzielona spacjami lista słów". Otrzymasz listę rzeczywistych kluczy tablicy, nawet jeśli poszczególne klucze zawierają spacje. –
@glennjackman Czy możesz wyjaśnić to bardziej "Używanie [@] i podwójnych cudzysłowów oznacza, że nie jest to" lista słów oddzielonych spacjami "' –