Мені потрібно створити ім’я змінної динамічно наступним чином (спрощений приклад):
#!/bin/sh
IDX=1
SERIES1="a b c d e f g"
SERIES2="h i j k l m n"
# How to get this value contains $SERIES1 or $SERIES2
# depending on the value of $IDX
CURRENT=${SERIES\${IDX}} # doesn't work, just an example
Якби IDX=1
я розраховував
echo $CURRENT
показувати
a b c d e f g
і якщо IDX=2
для показу
h i j k l m n
Мені потрібно буде використовувати його в циклі для невизначеної кількості SERIES, що надходять з іншого сценарію.
EDIT
Наразі використовується sh
як оболонка, але при необхідності я можу використовувати інший (навіть якщо це означає, що мені може знадобитися конвертувати кілька речей, але це нормально)
Моє запитання: Як призначити потрібний ряд CURRENT
Що я спробував? Наведений вище приклад (це не працює) та інші аромати, такі як:
CURRENT=$${SERIES$${IDX}}
CURRENT=${SERIES${IDX}}
EDIT2
Я на шляху до чогось:
eval echo $`echo "SERIES$IDX"`
Тут відображається правильний ряд. Однак я не можу знайти спосіб призначити його CURRENT
:
CURRENT=eval echo $`echo "SERIES$IDX"`
Але я здогадуюсь більше копати і я щось знайду. Будь-яка допомога цінується, хоча
EDIT3
Гаразд, я знайшов це :
eval "CURRENT=\$SERIES$IDX"
echo $CURRENT
відобразити те, що я очікую, настільки CURRENT
має правильний зміст.
sh