Создание имени строковой переменной из значения другой строки
В моем bash script у меня есть две переменные CONFIG_OPTION
и CONFIG_VALUE
, которые содержат строки VENDOR_NAME
и Default_Vendor
соответственно.
Мне нужно создать переменную с именем $CONFIG_OPTION
ie VENDOR_NAME
и присвоить значение в CONFIG_VALUE
вновь созданной переменной.
Как я могу это сделать?
Я пробовал
$CONFIG_OPTION=$CONFIG_VALUE
Но я получаю сообщение об ошибке в этой строке как
'./Build.bash: line 137: VENDOR_NAME="Default_Vendor": command not found'
Спасибо.
Ответы
Ответ 1
Я знаю, что никто не упомянет об этом, поэтому я пойду. Вы можете использовать printf
!
#!/bin/bash
CONFIG_OPTION="VENDOR_NAME"
CONFIG_VALUE="Default_Vendor"
printf -v $CONFIG_OPTION "$CONFIG_VALUE"
# Don't believe me?
echo "$VENDOR_NAME"
Готово!
Кстати, это довольно быстрый метод (так же быстро, как и метод declare
).
Ответ 2
В нем используются bash встроенные функции:
#!/bin/bash
VAR1="VAR2"
declare "${VAR1}"="value"
echo "VAR1=${VAR1}"
echo "VAR2=${VAR2}"
Выход script:
VAR1=VAR2
VAR2=value
В этом фрагменте используются имена переменных:
#!/bin/bash
CONFIG_OPTION="VENDOR_NAME"
declare "${CONFIG_OPTION}"="value"
echo "CONFIG_OPTION=${CONFIG_OPTION}"
echo "VENDOR_NAME=${VENDOR_NAME}"
Выход script:
CONFIG_OPTION=VENDOR_NAME
VENDOR_NAME=value