Tengo dos variables en mi script bash
CAR_PRICE=50000 BIKE_PRICE=20000Estoy pasando un argumento de línea de comando mientras ejecuto mi archivo de script de shell .sh.
--vehicletype CAR or --vehicletype BIKEPuedo leer el valor del tipo de vehículo en el script y almacenarlo en otra variable
VEHICLE_TYPE=<VALUE PASSED FROM COMMAND LINE ARG ie CAR/BIKEAhora estoy tratando de leer dinámicamente CAR_PRICE o BIKE_PRICE usando la siguiente sintaxis
${${VEHICLE_TYPE}_PRICE}para obtener los valores de los parámetros sustituyendo la primera parte de la variable dinámicamente en función del valor pasado, es decir, pero arroja un error de sustitución incorrecta .
Intenté varias maneras pero nada parece funcionar. Soy nuevo en el script de shell y no estoy seguro de si dicha sustitución dinámica es compatible con el script bash.
Cualquier indicador será de ayuda.
Puede usar price=${VEHICLE_TYPE}_PRICE; echo "${!price}" . Sin embargo, las matrices asociativas son una mejor herramienta para este trabajo:
declare -A vehicle_price vehicle_price[ford]=7777 vehicle_price[toyota]=8888 vehicle_type=toyota echo "${vehicle_price[$vehicle_type]}" # gives 8888Puede usar la referencia de variable indirecta en bash :
CAR_PRICE=50000 BIKE_PRICE=20000 VEHICLE_TYPE='CAR' var="${VEHICLE_TYPE}_PRICE" # variable name echo "$var" # variable value echo "${!var}"Producción:
CAR_PRICE 50000