Domanda Bash indirizzare l'indirizzamento di array?


Supponiamo che ne abbia un po ' bash array:

A1=(apple trees)
A2=(building blocks)
A3=(color television)

E indice J=2, come ottenere il contenuto dell'array di A2?


25
2018-01-03 04:53


origine


risposte:


Ho già trovato una risoluzione, questo può essere fatto da:

$ Aref=A$J
$ echo ${!Aref}
building
$ Aref=A$J[1]
$ echo ${!Aref}
blocks
$ Aref=A$J[@]
$ echo "${!Aref}"
building blocks

21
2018-01-03 06:29



Vale la pena notare che anche un indice verrà sostituito al momento della valutazione della variabile:

$ A2=(building blocks)
$ Aref=A2[index]
$ index=1
$ echo "${!Aref}"
blocks

17
2018-06-15 12:45



Oggi (con bash 4.3 e versioni successive), la best practice è da utilizzare nameref supporto:

A1=(apple trees)
A2=(building blocks)
A3=(color television)
J=2

declare -n A="A$J"
printf '%q\n' "${A[@]}"

... emetterà correttamente:

building
blocks

Questo è anche disponibile come nameref A="A$J" su ksh93. Vedere BashFAQ # 6 per dettagli.


2
2017-07-13 22:12