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?


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:


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.