我可以摆脱eval这里吗?我试图设置$current_database由用户输入(国家和行动)确定的适当变量
# User input
country="es"
action="sales"
# Possible variables for current_database
final_es_sales_path="blahblah/es/sales.csv"
final_en_support_path="yadayada/en/support.csv"
final_it_inventory_path="humhum/it/inventory.csv"
...
current_database=$(eval echo \${final_${country}_${action}_path})
Run Code Online (Sandbox Code Playgroud)
您可以使用关联数组,连接两个变量的值.例如:
declare -A databases
# initialization
databases["es:sales"]="blahblah/es/sales.csv"
databases["en:support"]="yadayada/en/support.csv"
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过以下方式获取数据库:
echo ${databases["${country}:${action}"]}
Run Code Online (Sandbox Code Playgroud)
这具有仅由一个变量收集数据库名称的优点.