Crear un nombre de variable de cadena a partir del valor de otra cadena

En mi secuencia de comandos bash, tengo dos variables CONFIG_OPTION y CONFIG_VALUE que contienen la cadena VENDOR_NAME y Default_Vendor respectivamente.

Necesito crear una variable con el nombre $CONFIG_OPTION es decir VENDOR_NAME y asignar el valor en CONFIG_VALUE a la nueva variable creada.

¿Como puedo hacer esto?

Lo intenté

 $CONFIG_OPTION=$CONFIG_VALUE 

Pero estoy obteniendo un error en esta línea como

 './Build.bash: line 137: VENDOR_NAME="Default_Vendor": command not found' 

Gracias.

Sé que nadie lo mencionará, así que aquí voy. Puedes usar printf !

 #!/bin/bash CONFIG_OPTION="VENDOR_NAME" CONFIG_VALUE="Default_Vendor" printf -v $CONFIG_OPTION "$CONFIG_VALUE" # Don't believe me? echo "$VENDOR_NAME" 

¡Hecho!

Por cierto, es un método bastante rápido (tan rápido como el método de declare ).

Esto usa bash builtins:

 #!/bin/bash VAR1="VAR2" declare "${VAR1}"="value" echo "VAR1=${VAR1}" echo "VAR2=${VAR2}" 

El resultado del script:

 VAR1=VAR2 VAR2=value 

Aquí está el fragmento con sus nombres de variable:

 #!/bin/bash CONFIG_OPTION="VENDOR_NAME" declare "${CONFIG_OPTION}"="value" echo "CONFIG_OPTION=${CONFIG_OPTION}" echo "VENDOR_NAME=${VENDOR_NAME}" 

El resultado del script:

 CONFIG_OPTION=VENDOR_NAME VENDOR_NAME=value 

Para shell puro, posiblemente intente:

 #!/usr/bin/env sh option=vendor_name value="my vendor" eval $option="'$value'" # be careful with ', \n, and \ in value eval echo "\$$option" # my vendor echo "$vendor_name" # my vendor 

¿Por qué?

 #!/usr/bin/env sh printf -v "var" "val" # prints the flag, var not set declare var=val # sh: declare: not found echo ${!var} # sh: syntax error: bad substitution 

No me gusta la evaluación, pero ¿hay alguna opción POSIX?