Вы должны, как говорит Тердон в своем ответе , использовать ассоциативные массивы bash вместо.
Но, если вы настаиваете и если у вас достаточно новый bash, вы можете использовать nameref (кстати, это волшебное слово для поиска на странице руководства).
i=1
declare -n tmp="foo_$i" # this is the nameref line
tmp="fooval" # actually sets $foo_1
echo "$foo_1" # prints fooval
Если внутри функции, используйте local -n
вместо , объявите -n
, чтобы получить локальную переменную функции.