jak uzyskać indeksy tablicy odniesienia w bash?

0

oto przykładowy kod

astr[10]=a
astr[20]=b
astr[30]=b
astrR="astr[@]"
echo ${!astr[@]} #the indexes
echo ${!astrR} #the values
#FAIL: echo ${!!astrR}

astrR="!astr[@]" # wild guess
echo ${!astrR} # empty output, so I am still wild

Jak uzyskać indeksy astrR?

Wodnik Moc
źródło
Nie znalazłem takiego pytania, ale tak naprawdę znalazłem sposób na odpowiedź tutaj: unix.stackexchange.com/a/390763/30352 , więc pomyślałem, że dobrze byłoby zachować to pytanie.
Wodnik Moc
Nie jestem do końca pewien, co próbujesz zrobić astrR? Czy próbujesz wydrukować indeksy i wartości tablicy asocjacyjnej?
Inian
Czy możesz wyjaśnić przypadek użycia, który próbujesz rozwiązać?
Inian
Dostaję nazwę tablicy jako parametr funkcji, a następnie muszę zmodyfikować tablicę zewnętrzną za pomocą referencji i zachować indeksy, ponieważ potrzebowałem sposobu dostępu do tablicy zewnętrznej za pomocą jej nazwy (jako nieznanej zmiennej), aby ją utrzymać (dodawaj, usuwaj przedmioty itp.)
Aquarius Power
Rozszerzenia z referencjami w bashnie są obsługiwane bezpośrednio. Być może będziesz musiał ponownie rozważyć swój projekt, jeśli planujesz zrobić to bash
Inian

Odpowiedzi: