Как создать динамическую переменную и присвоить ей значение? Я пытаюсь создать динамическую переменную и назначить ей 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.
Ответ 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.