Мне нужно динамически создать имя переменной следующим образом (упрощенный пример):
#!/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
Мне нужно будет использовать его в цикле для неопределенного числа СЕРИЙ, поступающих из другого скрипта.
РЕДАКТИРОВАТЬ В настоящее время используется 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
имеет правильный контент.