如何在BASH中更改value的值?

如何在BASH中更改value的值?,bash,pointers,Bash,Pointers,假设我有以下几点: Vegetable=Potato ( Kind of vegetable that i have ) Potato=3 ( quantity available ) Quantity=${!Vegetable} ${Vegetable}=$(expr ${!Vegetable} - 1) 如果我想知道我有多少蔬菜(在脚本中,我只能访问变量蔬菜),我会执行以下操作: Vegetable=Potato ( Kind of vegetable that i have

假设我有以下几点:

Vegetable=Potato ( Kind of vegetable that i have )
Potato=3 ( quantity available )
Quantity=${!Vegetable}  
${Vegetable}=$(expr ${!Vegetable} - 1)  
如果我想知道我有多少蔬菜(在脚本中,我只能访问变量
蔬菜
),我会执行以下操作:

Vegetable=Potato ( Kind of vegetable that i have )
Potato=3 ( quantity available )
Quantity=${!Vegetable}  
${Vegetable}=$(expr ${!Vegetable} - 1)  
但假设我拿了一个
土豆
,然后我想更新数量,我应该能够执行以下操作:

Vegetable=Potato ( Kind of vegetable that i have )
Potato=3 ( quantity available )
Quantity=${!Vegetable}  
${Vegetable}=$(expr ${!Vegetable} - 1)  

然而,这不起作用。有人能解释一下原因吗。

在bash 4.0中,您可以使用关联数组

eval ${Vegetable}=$(expr ${!Vegetable} - 1) 
declare -A VEGETABLE
VEGETABLE["Potato"]=3
VEGETABLE["Potato"]=$((VEGETABLE["Potato"]-1))
echo ${VEGETABLE["Potato"]}

在bash 4.0中,可以使用关联数组

declare -A VEGETABLE
VEGETABLE["Potato"]=3
VEGETABLE["Potato"]=$((VEGETABLE["Potato"]-1))
echo ${VEGETABLE["Potato"]}
尝试:

顺便说一下,您不需要使用
expr
。如您所见,Bash可以处理整数算术

有关Bash中间接寻址的更多信息,请参阅。

尝试:

顺便说一下,您不需要使用
expr
。如您所见,Bash可以处理整数算术

有关Bash中间接寻址的更多信息,请参阅