Как создать динамическую переменную и присвоить ей значение?
Я пытаюсь создать динамическую переменную и назначить ей 100
#!/bin/bash
.
.
active_id=$p_val
flag_$active_id=100
Но я получаю ошибку при этом, любая помощь?
Ответы
Ответ 1
Вы можете использовать bash объявить директиву и функцию направления следующим образом:
p_val="foo"
active_id=$p_val
declare "flag_$active_id"="100"
ИСПЫТАНИЯ:
> set | grep flag
flag_foo=100
UPDATE:
p_val="foo"
active_id="$p_val"
v="flag_$active_id"
declare "$v"="100"
> echo "$v"
flag_foo
> echo "${!v}"
100
Использование в if condition
:
if [ "${!v}" -ne 100 ]; then
echo "yes"
else
echo "no"
fi
# prints no
Ответ 2
Я не знаю, для чего это должно быть хорошо, но вы можете добиться такого, как это, с помощью инструкции bash eval
.
Следующий код иллюстрирует это.
#!/bin/bash
p_val="TEST"
active_id=$p_val
eval "flag_$active_id=100"
echo $flag_TEST
eval "echo \$flag_$active_id"
Завершающий echo
помещает
100
100
на stdout
.