Я хочу сделать следующее. Внутри функции мне нужно присвоить значение переменной, имя которой взято из другой переменной. Другими словами:
func() {
#
# Here happens something that ultimately makes $arg="var_name"
#
declare -g ${arg}=5
}
func
echo ${var_name}; # Prints out "5"
Фрагмент кода выше отлично работает в bash 4.2. Однако в bash до 4.2, declare
не имеет опции -g
. Все, что я нашел в google, говорит, что для определения глобальной переменной внутри функции я должен просто использовать синтаксис var=value
, но, к сожалению, var
сам зависит от другой переменной. ${arg}=5
тоже не работает. (Он говорит -bash: var_name=5: command not found
.
Для любопытных причина в том, что эта функция фактически создает глобальные переменные из параметров script, т.е. запуск script --arg1=val
автоматически создает переменную с именем arg1
со значением val
. Сохраняет тонны кода шаблона.