如何在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中间接寻址的更多信息,请参阅